gpt4 book ai didi

javascript - 如何更改knockoutjs observableArray的索引而不替换整个数组

转载 作者:行者123 更新时间:2023-11-28 02:39:53 25 4
gpt4 key购买 nike

我是一个knockoutjs新手,基本上我想在页面上做的是,我在 View 中加载激活详细信息列表,每个都有一个与列表项关联的删除链接。每个激活详情项包含三个属性,index、ActivationDate 和 ExpiryDate,例如。

    var activationItem = {
'index': count,
'activationDate': item.activationDate,
'expiryDate': item.expiryDate
};

现在,每当用户单击任何特定项目上的“删除”时。它应该重新排序所有列表索引以仍然反射(reflect)正确递增的索引。例如,如果第 2 项被删除,则用 1,2,3,4 代替 1,3,4。

它是如何完成的,替换数组。如下:

       //Removes selected item from activationlist
self.RemoveActivationListItem_Click = function () {

self.activationListItems.remove(this);

var count = 1;
var replaceArray = ko.observable([]);

//Re index all of the array items
ko.utils.arrayForEach(self.activationListItems(), function(item) {

var activationItem = {
'index': count,
'activationDate': item.activationDate,
'expiryDate': item.expiryDate
};

replaceArray().push(activationItem);

count++;

});

self.activationListItems.removeAll();
self.activationListItems(replaceArray());

TINY.box.show({ html: "Activation item removed", animate: true, close: false, boxid: 'message',autohide:5,top:90,left:0});

};

还有比这更好的方法吗?

最佳答案

如果只想显示 index 属性,您可以在 foreach 绑定(bind)中使用 $index knockout 对象,并且 ko 自己完成所有工作。请参阅此处的示例:http://jsfiddle.net/AfDQe/1/

如果您需要在 View 模型中存储索引,您可以简化删除功能:

self.RemoveActivationListItem_Click = function () {
self.activationListItems.remove(this);
var count = 1;

//Re index all of the array items
ko.utils.arrayForEach(self.activationListItems(), function(item) {
item.index = count;
count++;

});

TINY.box.show({ html: "Activation item removed", animate: true, close: false, boxid: 'message',autohide:5,top:90,left:0});

};

关于javascript - 如何更改knockoutjs observableArray的索引而不替换整个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12840023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com