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

Knockout.js打印foreach中对象的索引,knockout.js,Knockout.js,这可能很简单,但我似乎不容易找到它。在knockout.js中,如何在使用foreach绑定迭代的可观察数组中打印项目的索引?您不能。反正不是直接的。我自己使用此函数向ObservalArray中的对象添加索引属性: function indexSubscribe(array) { array.subscribe(function() { for (var i = 0, j = array().length; i < j; i++) {

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

您不能。反正不是直接的。我自己使用此函数向ObservalArray中的对象添加索引属性:

    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);  
                }
            }
        }); 
   };

淘汰赛2.1增加了不错的新选项$index。
下面是一个例子

下面的解决方案可能是延迟回答。但是,如果您的首选是使用
viewmodel
,下面的解决方案将有助于解决最新的问题

根据
knockout3.1.0
及以上版本,库具有简单的解决方法。
索引可以作为辅助参数传递给
数组foreach

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

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

希望此解决方案可能会对某些人有所帮助。

在KO 2.1.0中(现在提供测试版),您可以使用
$index
在foreach中获取索引。以下是测试线程:。与Matt在下面的回答中描述的类似,我使用了这种技术(将
索引的
函数添加到observableArrays):@RPNiemeyer:我大约98%确定我在淘汰赛论坛上从你那里偷了它@马特伯兰:不用担心@谢谢,因为我现在只是随便看看,我会看看的,很棒的东西。2.1.0现在已经过了测试版。事实上,
$index
在其ForEach绑定文档中用作示例2:
var items = ["Mercedes", "Volvo", "BMW"];

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