您是否尝试使用该.bind
功能?
例如,在您的 .html
<span data-bind="text: test, click: updateSomething.bind($data,'a variable','another variable') "></span>
在您的视图模型中:
var vm = function () {
var self = this;
self.test = ko.observable('ciao');
self.updateSomething = function (myVar1, myVar2, data, event) {
var theElem = $(event.target);
//do stuff with the theElem AND myVar
}
}
我还建议您使用另一种方法,使用自定义绑定处理程序:
在您的 html 中:
<span data-bind="myHandler : {var1:'variable1', var2:'variable2'}"></span>
在你的 js 文件中:
ko.bindingHandlers.myHandler = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var theElem = $(element);
var variables =valueAccessor();
var var1 = variables.var1;
}
}
第二种方法允许您编写更具可读性和可重用性的代码;此外,我个人更喜欢在自定义绑定处理程序中保留对 DOM ( ) 的所有访问$(...)
,以便更好地分离关注点。在这里你可以找到一个例子:jsfiddle