在我的应用程序中,我正在做很多事情
data-bind="handler:method.bind($data)"
因为我希望调用方法中的this引用包含它的viewmodel。有没有办法将其插入敲除,默认情况下,它总是将方法绑定到当前绑定的$ data?
答案 0 :(得分:1)
以下是一些想法/想法:
click
和event
绑定会自动为您执行此操作。他们会调用this
为$data
的函数,并将$data
作为第一个参数。我不确定您是使用自定义绑定还是其他绑定。
您通常可以通过在此处绑定函数或根据您的偏好/结构在视图模型中处理此问题,您可以在变量中捕获this
的值。
var ViewModel = function() {
this.myMethod = function() {
// use this
}.bind(this);
//or
var self = this;
this.myMethod2 = function() {
//use self instead of this inside your function
};
};
Knockout.punches plugin也有助于保持此值的正确值,这样如果您执行data-bind="click: $parent.someFunction"
,它将使用$parent
正确调用该函数{{1} 1}}。