我对淘汰赛有点新意,但在谷歌的帮助和堆栈溢出的情况下,我设法找到了我需要的部分。我似乎无法让他们一起工作。
所以我在这里或他的网站上发布了RP Niemeyer的代码作为答案。 我正在使用淘汰可排序,脏标志和观察可排序项目的索引。
我正在寻找的是一种在我还原脏项时使可排序更新的顺序。我的对象的索引属性将被还原,但可排序区域中的项目顺序不会根据恢复的值进行更新。
以下是a fiddle的问题示例。
如果将“第1项”移动到“第2项”之后,您将看到两个项目都变脏(应该如此)。然后单击“恢复”按钮。注意“订单”项目如何更新,但不能更新它们在可排序项中的顺序。
为了使情况更糟(这有点是问题的副作用),将“第3项”移到“第4项”之后,你会看到现在第1项到第4项被标记为脏。
这是因为还原脏项时可重置项目的顺序没有被重置。 “项目1”的订单可观察值为0,但它在可排序的索引1中。因此,代码再次标记为脏。
如果有人可以指出我需要改变什么以使其按照我想要的方式工作,我将非常感激。
The code is quite lengthy and I wouldn't know which part to post here, but apparently I need a code block to be allowed to post my fiddle link. :(
提前致谢, 卢德维格
答案 0 :(得分:0)
使用您当前的结构,我认为您可以在视图模型级revertItem
函数中添加几行,以便按“正确”顺序将项目放回原位。类似的东西:
self.revertItem = function (preset) {
$.each(preset.dirtyItems(), function (index, item) {
item.revert();
});
//new code added to sort based on order
self.items.sort(function(a, b) {
return a.order() > b.order() ? 1 : -1;
});
};