使用knockout.js在对象数组中显示未知索引的对象

时间:2018-04-10 07:52:53

标签: javascript knockout.js durandal

我有一个对象数组,我需要使用Knockout.js:

array([
    { name: apple, ID: 100 },
    { name: orange, ID: 200},
    { name: banana, ID: 300 }
]);

数组是动态的,因为在白天的任何时间每行都可以更改位置或索引(但行的内容保持不变),例如:

array([
    { name: orange, ID: 200},
    { name: apple, ID: 100},
    { name: banana, ID: 300 }
]);

我想更改' apple'的显示名称桃子'桃子'无论行在白天可能移动到哪里。我尝试过以下代码,但这似乎不起作用:



ko.utils.arrayForEach(array.rowItems, function(item,index) {

if(item = array.rowItems.ID = 100))

return array.rowItems[item = (array.rowItems.ID = 100)].name = "peach"});

<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/2.0.0/knockout-min.js"></script>
&#13;
&#13;
&#13;

有没有人有任何建议?我也尝试过使用indexOf和findIndex。

1 个答案:

答案 0 :(得分:1)

如果您的目标只是在数组中循环项目,那么您可以使用下面的解决方案。

var array = [
    { name: "apple", ID: 100 },
    { name: "orange", ID: 200},
    { name: "banana", ID: 300 }
]

ko.utils.array.forEach(array, function(item, index) {
    if(item.ID === 100){
        item.name = "peach";
    }
});

您不需要在forEach项回调中引用数组,因为您只是更新循环中每个项的属性。