默认情况下,KnockoutJs将所有视图模型绑定到$ Data

时间:2015-01-17 18:43:00

标签: knockout.js

在我的应用程序中,我正在做很多事情

data-bind="handler:method.bind($data)"

因为我希望调用方法中的this引用包含它的viewmodel。有没有办法将其插入敲除,默认情况下,它总是将方法绑定到当前绑定的$ data?

1 个答案:

答案 0 :(得分:1)

以下是一些想法/想法:

  • clickevent绑定会自动为您执行此操作。他们会调用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}}。