【问题标题】:displaying an object by unknown index in object array using knockout.js使用 knockout.js 在对象数组中按未知索引显示对象
【发布时间】:2018-09-19 18:06:36
【问题描述】:

我有一个需要使用 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”的显示名称更改为“peach”,而不管该行在白天可能会移动到哪里。我尝试了以下代码,但这似乎不起作用:

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>

有人有什么建议吗?我也尝试过使用 indexOf 和 findIndex。

【问题讨论】:

  • 属性名是变量还是字符串?也许您缺少引号?
  • 我不明白为什么你一直在到处写item = array.rowItems.ID = 100。我建议您删除代码中未使用的item 分配,并使用== 进行比较
  • 什么是 rowItems?

标签: javascript knockout.js durandal


【解决方案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 项目回调中引用该数组,因为您只是在更新循环中每个项目的属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-26
    • 2012-04-12
    • 1970-01-01
    • 2015-12-03
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多