knockout.js如何访问$指数在处理函数(knockout.js How to access

2019-07-02 13:06发布

据我了解, $index是一个提供内部foreach:结合,给对象的索引...我有一个click:体结合,例如click:foo ,我需要访问$indexfoo

有没有办法?

Answer 1:

是,

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


Answer 2:

而不是通过一个函数中的结合周围黑客,你只需要获得绑定上下文。 只要你有机会获得与绑定关联的DOM元素,你可以结合上下文及其使用的所有属性ko.contextFor()函数。

你在你的处理器获得本次活动对象为您提供了通过访问节点target财产。 使用抓斗的上下文。

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


Answer 3:

它与ES6代码更容易。 在我的html我的网页数组

<span data-bind="foreach: pages">
     <a data-bind="click: $parent.gotoPage.bind($parent), text: $index()+1">
     </a>
</span>

在视图控制器I类具有gotoPage方法。 第一个参数是的$指数foreach 。 非常简单。

class ViewModel {
    constructor() {
        this.requestedPage = ko.observable(0);
        this.pages = ko.observableArray([0,1,2,3]);
    }

    async run() {
        this.message("Running");
    }

    gotoPage(pageRequested, event) {
        this.requestedPage(pageRequested);
        this.run();
    }
}


文章来源: knockout.js How to access $index in handler function
标签: knockout.js