13

サーバーにまだ保存されていないモデルについて、Collection.get(id) を使用して、cid によって Backbone.js コレクション内のモデルを検索できますか?

ドキュメントから、.get は id または cid のいずれかでモデルを見つける必要があるようです。ただし、collection.get(cid)モデルは見つかりませんが、これは見つかりませんcollection.find(function(model) {return model.cid===cid; })。おそらく私は何か基本的なことを見落としています。

以下の例のjsFiddle

var Element = Backbone.Model.extend({});
var Elements = Backbone.Collection.extend({ model:  Element });

var elements = new Elements(), el, cids = [];

for (var i=0; i<4; i++) {
    el = new Element({name: "element"+i})
    elements.add(el);
    cids.push(el.cid);
}

console.log(cids);
el1 = elements.get(cids[0]);     
console.log(el1);  // undefined


el1a = elements.find(function(model) { return model.cid === cids[0]; });
console.log(el1a);  // success

Backbone.js - id vs idAttribute vs cid

4

1 に答える 1

24

バックボーン 0.9.9 ( changelog を参照) では、メソッドが削除され、.getByCid()その機能が直接組み込まれました。0.9.9 未満を使用している場合は、メソッド.get()を使用できます。.getByCid()ライブラリの最新の状態を反映するために、ドキュメントから削除したと思います。

編集:

詳細については、以下の @Ferdinand Prantl のコメントを参照してcidください.get({ cid: "xxx" })。混乱を招きましたことをお詫び申し上げます。

于 2013-01-25T15:55:34.723 に答える