knockout.js如何在处理函数中访问$ index

Tom*_*Tom 19 knockout.js

据我所知,$indexforeach:绑定中可用,给出对象的索引......我有一个click:绑定,例如click:foo,我需要访问$index内部foo.

有办法吗?

Jef*_*ado 42

您只需要获取绑定上下文,而不是通过绑定中的函数来解决它.只要您可以访问与绑定关联的DOM元素,就可以使用该ko.contextFor()函数获取绑定上下文及其所有属性.

您在处理程序中获得的事件对象使您可以通过该target属性访问该节点.使用它来获取上下文.

var viewModel = {
    foo: function (data, event) {
        var context = ko.contextFor(event.target);
        // do stuff with context.$index()
    }
};
Run Code Online (Sandbox Code Playgroud)

  • 由于`$ index`是一个可观察的,我必须用括号做`context.$ index()`,因为observables是淘汰赛中的函数http://goo.gl/TIGYV1 (3认同)

小智 12

是,

<input type="button" data-bind="click: function(data, event) { myClickHandler($index, data, event); }"/>
Run Code Online (Sandbox Code Playgroud)