0

UIのドラッグアンドドロップイベントに基づいて、2つのコレクション間でモデルを移動しようとしています(1つの「ボックス」から別の「ボックス」へ)。元のコレクションから要素を削除すると、新しいコレクションにも表示されないため、要素が存在しなくなったようです(削除をコメントアウトすると、他のコレクションに表示されます)。

これは、各モデルがサーバー側のコレクションに対応し、コレクションから何かを削除すると、通常はサーバーに戻ってそれを強制終了するという考えによるものだと私は直感しています。ただし、ここでは、モデルをもう少し自由に動かせるようにしたいと思います。それは可能ですか?バックボーンを間違って使用していますか?

アップデート

さて、これは私のコードの抜粋です。必要に応じてフィドルを作成できますが、これは何が起こっているかを強調するのに役立つかもしれません。

    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

追加と削除の順序を変更する必要があることがわかりました。そうしないと、古い要素と新しい要素の両方で UI 対応要素の削除がトリガーされます...コメントのおかげで、正しい方向に進むことができました。

于 2012-12-06T06:16:01.523 に答える