Knockout.js打印foreach中对象的索引

时间:2012-03-28 18:47:41

标签: knockout.js

这可能很简单,但我似乎无法轻易找到它。在knockout.js中,你将如何在使用foreach绑定迭代的可观察数组中打印项目的索引?

3 个答案:

答案 0 :(得分:35)

淘汰赛2.1增加了新的选项$ index。 以下是示例http://knockoutjs.com/documentation/foreach-binding.html

答案 1 :(得分:11)

你做不到。反正不是直接的。我自己使用这个函数来为我的ObservableArrays中的对象添加一个索引属性:

    function indexSubscribe(array) {
        array.subscribe(function() {
            for (var i = 0, j = array().length; i < j; i++) {
                var item = array()[i];
                if (!item.index) {
                    item.index = ko.observable(i);  
                } else {
                    item.index(i);  
                }
            }
        }); 
   };

然后在我的ViewModel中,我可以这样做:

this.whatevers = ko.observableArray();
indexSubscribe(this.whatevers);

答案 2 :(得分:0)

以下解决方案可能是迟到的答案。但如果您最好选择viewmodel,则以下解决方案将有助于最新修复。

根据Knockout 3.1.0以上的图书馆可以简单地解决。 index可以作为辅助参数传递给arrayForEach

var items = ["Mercedes", "Volvo", "BMW"];

ko.utils.arrayForEach(items, function(item, index) {
    console.log(item + ' ' + index);
});

希望这个解决方案可以帮助某人。