2012-02-22 1 views
10

バックボーンアプリケーションの1つの機能は、タイプAのモデルをタイプBのモデルに関連付けることです。これは、ビューAをビューBにドラッグすることによって行われます。ドロップイベントが発生し、DOM要素Aが表示されますが、モデルAに関する情報は表示されません。backbone.jsでjQuery UIドラッグ&ドロップを使用する

この情報を取得するにはどうすればよいですか?私の最高の推測では、これまでのドロップハンドラがまだ

  • 火災ビューAでイベントが行われていない場合
    • はモデルAは、ドラッグ終了にこの参照を削除し、アプリの名前空間で自分自身への参照を保存しています、イベントと一緒にBをモデル化するための参照を渡し、その後、コールモデルBの方法...ビュー

    の$の.DATA属性として

  • 店モデルAが、すべてのこれらのモデルを持ちますアプローチは畳み込まれているように見えます。

  • +0

    DOM要素を取得できる場合は、DOM要素はモデルのIDに関連付けられていますか?要素のID、またはあなたが設定したデータフィールドのように? – kinakuta

    +0

    これは合理的には良い方法ですが、モデルがすでにビューと複雑にリンクしている場合、idで検索する必要はありません。モデルを見失って見つけなければならないのは無駄です再び。 – wheresrhys

    +0

    私はあなたが何を意味するのか知っていますが、2つのモデル間の相互作用は幻想的です。実際には何が起こっているのかはDOMイベントの発生です。モデルが実際にどのような形でも変化していないので、DOMからデータを取得することは必要なステップのようです。 – kinakuta

    答えて

    4

    データ属性として保存するのは実際にはきれいで、パフォーマンスは悪くありません。モデルのcid属性をdata-cidとしてDOM elに格納し、コレクションのgetByCidメソッドを使用してモデルを取得できます。

    0

    idを使ってDOM要素をモデルに関連付けるコメントにkinakutaが挙げられているようです。 a data-attribute

    これは、双方向の依存関係を持つことができるため、後で簡単に参照できるため、実装の観点からは理にかなっています。

    ソリューションAもちょっとハックしているようですが、ソリューションBはコードがあまりにもクリーンであり、ソリューションCは基本的にデータ属性を使用するのと同じです。

    関連する問題