0

我对淘汰赛有点陌生,但在谷歌和堆栈溢出的帮助下,我设法找到了我需要的部分。我似乎无法让他们一起工作。

因此,我将 RP Niemeyer 的代码片段作为答案发布在这里或他的网站上。我正在使用淘汰赛可排序、脏标志和可排序项目的观察索引。

我正在寻找的是一种在我恢复脏项目时使可排序更新其顺序的方法。我的对象上的索引属性得到恢复,但可排序区域中项目的顺序不会根据恢复的值进行更新。

这是一个问题的例子。

如果您将“项目 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. :(

在此先感谢,路德维格

4

1 回答 1

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

更新小提琴:http: //jsfiddle.net/rniemeyer/d2e5c/

于 2013-09-25T11:58:28.337 回答