2016-04-29 9 views
1

私は以下を理解するのに苦労していBACKBONE.JSを学び、docsを読んだ:Collection#modelを見てBackboneのraw属性オブジェクトとは何ですか?

"If a model property is defined, you may also pass raw attributes objects, and have them be vivified as instances of the model." 

、彼らは例を提供する:

var Library = Backbone.Collection.extend({ 
    model: Book 
}); 

しかし、どのように私はやりますそこから進み、 "生の属性オブジェクトを渡す"?

********編集***********

[OK]を、今、私はこれが意味することは、私がしたモデル「ブック」を追加した場合ということだと思い振り返ります図書館のコレクションは今できるはずです -

var lib = new Library; 

lib.add([ 
    {name: "Curious George"}, 
    {name: "Harry Potter"} 
]); 

これで、対応する名前の2つのモデルがlibコレクションに作成されます。この場合

+0

はいこれは、libコレクションに2つのモデルを作成します。 –

答えて

1

生のオブジェクトがこの例では、単純なオブジェクト(未すでに構築されたモデル)

で、コレクションはタイプBookである(いくつかの定義済み属性とデフォルト値を持っている可能性があるモデルです)

var Library = Backbone.Collection.extend({ 
    model: Book 
}); 

ライブラリはコレクションBookです。

ライブラリの一部として新しいブックを作成する場合は、2つの方法があります。

1)最初のモデルを作成し、コレクション

var book1 = new Book({ 
    id: 1, 
    name: 'abc' 
}); 

Library.add(book1); 

2)生が直接コレクションに属性を渡しに追加します。

Library.add([{id: 1, name: 'abc'}]); 
+0

の最初の方法で、なぜbook1をライブラリに追加する必要がありますか?最初にモデルを定義してから、すべてのブックモデルがライブラリコレクションの一部になっているわけではありません。 – akantoword

+1

モデルはエンティティとして独自に存在することができます。しかし、それをコレクションに追加するには、明示的にコレクションに追加する必要があります。その後、それは図書館の一部になります。 –

+0

ああ、最初の部分の目的は何ですか? - Library = Backbone.Collection.extend({ モデル:Book }); これはちょうど#addがBookタイプのモデルになることを意味していますか? – akantoword

関連する問題