Knockout.js 使用其他变量检索ko函数中的event.target

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

好的,在我的viewmodels中,我经常创建如下函数

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;

    }
}