2015-07-06 3 views
1

У меня есть ViewModel с функциейНевозможно привязать функцию к кнопке мыши

function resetForm(){ 
     loanSystem("lis"); 
     status(""); 
     processor(""); 
     fileType("funded"); 
     orderDate(""); 
     loanNumber(""); 
     team(""); 
     borrower(""); 
     tracking(""); 
    }; 

и кнопка на странице с

<button type="reset" data-bind="click: resetForm">Reset</button> 

Но я получаю сообщение об ошибке:

Unable to process binding "click: function(){ return resetForm}. resetForm is not defined.

Но я знаю, что мой resetForm() работает, потому что он вызван в моем init function, и если я изменю значения в моем resetForm() он показывает на начальной загрузке страницы. Есть идеи?

var homeViewModel = (function() { 
 
    var loanSystem = ko.observable("lis"); 
 
    var status = ko.observable(""); 
 
    var processor = ko.observable(""); 
 
    var fileType = ko.observable("funded"); 
 
    var orderDate = ko.observable(""); 
 
    var loanNumber = ko.observable(""); 
 
    var team = ko.observable(""); 
 
    var borrower = ko.observable(""); 
 
    var tracking = ko.observable(""); 
 
    var isLoanSystem = ko.computed(function() { 
 
     return (loanSystem() == "lps"); 
 
    }); 
 
    var isCalendar = ko.computed(function() { 
 
     return (isLoanSystem() && fileType() == "cancelled"); 
 
    }); 
 

 
    function resetForm(){ 
 
     loanSystem("lis"); 
 
     status(""); 
 
     processor(""); 
 
     fileType("funded"); 
 
     orderDate(""); 
 
     loanNumber(""); 
 
     team(""); 
 
     borrower(""); 
 
     tracking(""); 
 
    }; 
 

 
    function submitFileInformation() { 
 
     if (!ValidInputs()) { 
 
      return; 
 
     } 
 
     var fileData = { 
 
      loanSystem: loanSystem(), 
 
      status: status(), 
 
      processor: processor(), 
 
      fileType: fileType(), 
 
      orderDate: orderDate(), 
 
      loanNumber: loanNumber(), 
 
      team: team(), 
 
      borrower: borrower(), 
 
      tracking: tracking() 
 
     }; 
 

 
     $.ajax({ 
 
      type: "POST", 
 
      url: "/ComplianceProcessing/Ajax.ashx", 
 
      data: JSON.stringify(fileData), 
 
      contentType: "application/json; charset=utf-8", 
 
      dataType: "json", 
 
      success: function(data) { 
 
       if (data === false) { 
 
        alert("There was an error writing the file to the database."); 
 
        return; 
 
       } 
 
       alert('Data has been successfully saved.'); 
 
       resetForm(); 
 
      }, 
 
      failure: function() { 
 
       alert('Failure'); 
 
      } 
 
     }); 
 
    } 
 

 
    return { 
 
      init: function() { 
 
       resetForm(); 
 
      }, 
 
      loanSystem: loanSystem, 
 
      isLoanSystem: isLoanSystem, 
 
      status: status, 
 
      processor: processor, 
 
      fileType: fileType, 
 
      isCalendar: isCalendar, 
 
      orderDate:orderDate, 
 
      loanNumber: loanNumber, 
 
      team: team, 
 
      borrower: borrower, 
 
      tracking: tracking 
 
     }; 
 
    })();

+0

попробовать 'возвращает истину,' в конце функции. то есть после 'tracking (" ");' –

+0

Я добавил фрагмент кода, демонстрирующий мою модель представления. Я попробовал заявление о возврате, но не повезло. – wizloc

ответ

1

Ваш resetForm не exprosed от вашего ViewModel, что делает его esentally частным так Нокаут не может найти его.

Решение очень легко, просто включите resetForm в вашем возвращенном объекте (который является вашим «публичный API»):

return { 
      init: function() { 
       resetForm(); 
      }, 
      loanSystem: loanSystem, 
      isLoanSystem: isLoanSystem, 
      status: status, 
      processor: processor, 
      fileType: fileType, 
      isCalendar: isCalendar, 
      orderDate:orderDate, 
      loanNumber: loanNumber, 
      team: team, 
      borrower: borrower, 
      tracking: tracking, 
      resetForm: resetForm //add this line 
     }; 
+0

Вы поняли. большое спасибо – wizloc

Смежные вопросы