0

我正在尝试根据 UI 中的拖放事件在两个集合之间移动模型(从一个“框”到另一个)。现在,当我从其原始集合中删除该元素时,它显然不复存在,因为它也没有出现在新集合中(如果我注释掉删除,则其他集合中的外观有效)。

我的直觉是,这是因为每个模型都对应于一个服务器端集合,并且通常从集合中删除某些东西甚至会返回到服务器来杀死它。然而,在这里,我希望我的模型更加自由浮动。那可能吗?我是否错误地使用了 Backbone?

更新

好的,这是我的代码的摘录。如有必要,我可以创建一个小提琴,但也许这有助于突出正在发生的事情:

    drop: function(event, ui) {
        var item = ui.draggable.data("model");
        newcollection.add(item);
        console.log(item);
        oldcollection.remove(item);
        console.log(item);
    }

现在,控制台输出如下所示:

d {attributes: Object, _escapedAttributes: Object, cid: "c83", changed: Object, _silent: Object…}

d {_previousAttributes: Object, _pending: Object, _escapedAttributes: Object, changed: Object, _silent: Object…}

显然,模型本身已经发生了变化,而除了从集合中删除之外,什么都没有发生。我现在看到它实际上并没有“不复存在”,但仍然 - ?

4

2 回答 2

3

从集合中删除模型不会从服务器中删除该模型。就是model.destroy()这样。这里是 的来源Collection.remove。当对骨干存有疑问时,请直奔源头。它很小,很容易阅读和理解。

您的代码中的其他地方可能存在错误,但我们需要代码示例或 jsfiddle 来帮助您找到它。

于 2012-12-06T05:43:17.787 回答
0

Well it turns out I need to change the order of add and remove; otherwise the removal of the UI corresponding element is triggered both for the old and the new one... thanks for the comments though, helped nudge me into the right direction.

于 2012-12-06T06:16:01.523 回答