14

サーバーからモデルをフェッチするコレクションがあります。

これは機能します。モデルをそのIDで取得したいので、次のようにMyCollection.at(0)なります。

child
_changes: Array[0]
_changing: false
_currentAttributes: Object
_events: Object
_hasComputed: true
_pending: false
_previousAttributes: Object
attributes: Object
_id: "50ef7a63b2a53d17fe000001"
author_name: "author name"
bookmark: ""
info: "bookmark description"
__proto__: Object
changed: Object
cid: "c26"
collection: child
view: child
__proto__: Surrogate

IDでモデルを取得しようとすると、次のようになります。

MyCollection.get("50ef7a63b2a53d17fe000001")
=> undefined

MyColleciton.get({_id:"50ef7a63b2a53d17fe000001"})
=> undefined

MyCollection.get({'_id':"50ef7a63b2a53d17fe000001"})
=> undefined

私はそれを理解していません-ドキュメントは.get()、指定されたIDを持つモデルがそのコレクションに存在する場合、メソッドがモデルを返すことを明確に述べています。

4

2 に答える 2

20

Model.idAttributeモデルに設定しましたか?

var Model = Backbone.Model.extend({
    idAttribute:"_id"
});

デフォルトでは、Backboneはidプロパティがidと呼ばれることを想定しています。がidAttribute設定されると、BackboneはIDの処理を標準化してmodel.id、idプロパティが別の名前で呼び出された場合でも常に使用できるようにします。元のidプロパティは、モデルのattributesハッシュで利用可能であり、そのため、getmethdを介して利用できます。それで:

model.id === model.get('_id') // -> true
于 2013-01-13T02:36:06.733 に答える
3

cidモデルの(クライアント側ID)属性をへの引数として使用できますMyCollection.get()。これは、作成以降に存在することが保証されています。ドキュメントはそれが機能すると考えているようです。http://backbonejs.org/#Collection-getを参照してください。

于 2013-01-13T02:16:20.740 に答える