2012-02-09 2 views
0

これはちょっと混乱しています。ここに貼り付けるコードはありませんが、助けていただければ幸いです。バックボーンを使って仮想的な設定をしたときに問題が発生しました。これらは、あらかじめ設定されています。メッセージのメールボックスのJSONデータのバックボーンカスタムコレクション

  • ポストオフィス=コレクション
  • メールボックス
  • メッセージ=コレクション
  • メッセージ
  • メールボックスのモデルは、そのプリセット属性の一つとして、空白の「メッセージ」のコレクションを持っています今

私は次の操作を実行した場合

postoffice.add([ 
{ 
    "id": "mailbox1", 
    "messages": [ 
     { 
      "id": "message1" 
     }, 
     { 
      "id": "message2" 
     } 
    ] 
}, 
{ 
    "id": "mailbox2", 
    "messages": [ 
     { 
      "id": "message1" 
     }, 
     { 
      "id": "message2" 
     } 
    ] 
}, 
{ 
    "id": "mailbox2", 
    "messages": [ 
     { 
      "id": "message1" 
     }, 
     { 
      "id": "message2" 
     } 
    ] 
} 
]) 

各空のMailbox.messagesコレクションに、JSONデータから作成されたMessageモデルが挿入されると思います。実際には、各メールボックスにメッセージデータを取得する新しい「コレクション」属性が追加されます。しかし、このデフォルトコレクション内のモデルはMessageモデル構造を持たないので、これは私のためには機能しません。

JSONオブジェクトの配列を正しいタイプのプリセットコレクションにマップすることができますか?

答えて

1

あなたに役立つものはBackbone Relationalのようなものだと思います。異なるモデル間の関係を定義することができます。あなたはそれぞれのMessagesバックボーンコレクションを持っているということにすれば

initialize: function(attr, options) { 
    this.Messages= new MessagesCollection(attr.messages); 
    delete this.attributes.messages 
} 

自分で何かを転がるように探しているなら、あなたはあなたのメールボックスのモデルのためにあなたの初期化中に、次のような何かを行うことができますPostOfficeMailbox削除ステートメントは、それが属性であることから削除します...だからMailbox.get('messages')はもはや機能しません。

あなたの問題を回避するには、私はそれが何をする必要があるかないが、私は、より堅牢なアプリケーションのために、バックボーン関係が進むべき道だと思い

+0

感謝をhelpes希望。 – Dan