来自绑定的Knockout 2.0参数的顺序不正确?

ken*_*eiv 11 javascript knockout.js

使用Knockout 2.0使用此数据绑定:

data-bind="click: $root.deleteSomeEntity.bind($data, $parent)"
Run Code Online (Sandbox Code Playgroud)

在Knockout viewmodel JavaScript中的第一个参数

self.deleteSomeEntity = function (data, parent) {
    // perform deletion
}
Run Code Online (Sandbox Code Playgroud)

似乎是父母而不是数据.

是否有这种行为的原因或我缺少的东西?

RP *_*yer 12

当你调用bind第一个参数时将是值this.因此,在您的通话this$data,第一个参数将是$parent.

如果$root$parent这种情况,那么你可以这样做:

$root.deleteSomeEntity.bind($root)

KO将数据作为第一个参数传递,this并将设置为$root.

如果$parent不是$root(你可能不想依赖于你的方法在root 上this的另一个对象$root),那么你会做类似的事情:

$root.deleteSomeEntity.bind($root, $data, $parent)

否则,肯定有一些方法可以确保您this在视图模型中具有适当的功能.这取决于你的结构.

  • 请注意:使用`bind`的第一个参数作为`this`并不是KO的决定.大多数较新的浏览器本身都支持`bind`,KO为没有它的浏览器添加了这种支持.关于bind的一些信息:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind (2认同)