使用淘汰赛提交'绑定子视图模型和继承的回调方法

时间:2013-03-18 10:57:54

标签: knockout.js knockout-2.0

我正在尝试使用Knockout JS解决以下问题

  • 需要通过“提交”绑定将HTML表单绑定到子视图模型
  • 绑定到“submit”的回调方法是一种继承方法

以下代码将更好地解释上述情况。同样可以在this fiddle中找到。

function MasterViewModel() {
    var self = this;
    self.employeeViewModel = new EmployeeViewModel();
};

function EmployeeViewModel () {
    var self = this;
    self.empFirstName = ko.observable();
    self.empLastName = ko.observable();
    self.employeeList = ko.observableArray([]);
};

EmployeeViewModel.prototype.addEmployee = function () {
    var self = this;
    self.employeeList.push(new Employee(self.empFirstName(), self.empLastName()));
}

function Employee(firstNameParam, lastNameParam) {
    var self = this;
    self.firstName = ko.observable(firstNameParam);
    self.lastName = ko.observable(lastNameParam);
}

ko.applyBindings(new MasterViewModel());

在HTML中,我使用提交绑定,如下所示;

<form data-bind="submit: employeeViewModel.addEmployee">
</form>

我观察到,总是,为回调方法传递的“this”上下文是“MasterViewModel”的实例。我搜索了一种使用“提交”绑定传递不同上下文的方法,但是徒劳无功。

这是我试图利用的限制,是否有解决方法?

感谢。

1 个答案:

答案 0 :(得分:0)

 <script type="text/javascript">
       var viewModel = {       
           numberOfClicks : ko.observable(0),       
           incrementClickCounter : function() {  
                 var previousCount = this.numberOfClicks(); 
                 this.numberOfClicks(previousCount + 1);    
            }  
       }; 
   </script>

http://knockoutjs.com/documentation/click-binding.html 根据淘汰文档,如果你还没有,你应该在你的脚本中定义增量Click Counter函数,这是你可以控制“this”值的地方