0

バックエンドが主キーにカスタム フィールドを使用するため、それ自体に idAttribute が設定されたモデルを指定するコレクションがあります。コードは次のようになります。

var SearchItemModel = Backbone.Model.extend({
    idAttribute: 'searchDefId'
});

var savedSearchesCollection = new SavedSearchesCollection({
    model: SearchItemModel
});

を実行することでモデルを見つけることができるはずですがthat.collection.get(searchDefIdValue)、できません。以下に、私のコレクションに 2 つのモデルがあることがわかります。Backbone の 'c44' の cid に基づいてモデルを取得しようとすると、問題はありません。しかし、カスタム ID フィールド 'searchDefId' を検索しようとしても、見つかりません。Backbone は idAttribute の値を id にコピーするはずだと思っていましたが、「id」フィールドが表示されません。

また、使用しているモデルを見つけることができますが、that.collection.where({ searchDefId: data.searchDefId})[0]それはより高価なように思われることに注意してください.

コンソール出力

4

1 に答える 1

2

options問題は、最初の引数としてSavedSearchesCollectionwhen がBackbone.Collection期待されるときに渡すことだと思いますmodelsmodelこれは、上のプロパティの欠如によっても証明されthat.collectionます。

試す

var savedSearchesCollection = new SavedSearchesCollection([], {
    model: SearchItemModel
});
于 2013-09-10T21:42:36.140 に答える