我正在尝试使用Knockout JS解决以下问题
以下代码将更好地解释上述情况。同样可以在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”的实例。我搜索了一种使用“提交”绑定传递不同上下文的方法,但是徒劳无功。
这是我试图利用的限制,是否有解决方法?
感谢。
答案 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”值的地方