Knockout.js 使用其他变量检索ko函数中的event.target
好的,在我的viewmodels中,我经常创建如下函数Knockout.js 使用其他变量检索ko函数中的event.target,knockout.js,knockout-2.0,Knockout.js,Knockout 2.0,好的,在我的viewmodels中,我经常创建如下函数 self.updateSomething = function(data, event){ var theElem = $(event.target); //do stuff with the elem } 很好,没问题。我遇到的问题是,我还想向函数传递一个值 self.updateSomething = function(myVar, data, event){ var theElem = $(even
self.updateSomething = function(data, event){
var theElem = $(event.target);
//do stuff with the elem
}
很好,没问题。我遇到的问题是,我还想向函数传递一个值
self.updateSomething = function(myVar, data, event){
var theElem = $(event.target);
//do stuff with the theElem AND myVar
}
但这不起作用。这看起来很简单,我确信这只是一个语法问题,但我无法理解,谷歌让我失望。有人想扔我一根骨头吗?谢谢 您是否尝试使用
.bind
功能
比如说,,
在你的.html文件中
<span data-bind="text: test, click: updateSomething.bind($data,'a variable','another variable') "></span>
我还建议您使用另一种方法,使用自定义绑定处理程序: 在html中:
<span data-bind="myHandler : {var1:'variable1', var2:'variable2'}"></span>
第二种方法允许您编写更可读和可重用的代码;
此外,我个人更倾向于在自定义绑定处理程序中保留对DOM(
$(…)
)的所有访问,以便更好地分离关注点。在这里你可以找到一个例子:这些变量在应用程序中是常量吗?如果是的话,你可以试试。你能发布一个你的updateMething
函数在HMTL中的示例调用吗?谢谢Francesco,你指出还有其他方法可以实现这一点。在这种情况下,自定义绑定处理程序将执行此操作。
<span data-bind="myHandler : {var1:'variable1', var2:'variable2'}"></span>
ko.bindingHandlers.myHandler = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var theElem = $(element);
var variables =valueAccessor();
var var1 = variables.var1;
}
}