2

このようなバックボーン コレクションがあります

var ContactsCollection = Backbone.Collection.extend({
    model: Contact,

    initialize: function () {
            //retrieves contacts from web service
            //contactsLoaded: is the callback that gets called after 
            //the contacts get received
            loadContacts(this.contactsLoaded);
    },

    contactsLoaded: function (contacts) {
            for (var i = 0; i < contacts.length; i++) {
              //TODO populate the collection [models][1]
            }
    }
});

つまり、コレクションのモデルを自己設定したいのですが、どうすればよいですか?

4

4 に答える 4

2

Collection#fetchはまさにあなたが望むことを行うはずなので、REST API の使用を検討してください。

var ContactsCollection = Backbone.Collection.extend({
model: Contact,
url: '', // set the URL
initialize: function () {
  this.fetch();
}});
于 2013-04-09T16:38:47.357 に答える
0

@Loamhoofに同意します。これを行うには、バックボーン フェッチを使用する必要があります。

fetch の呼び出しをコレクションの初期化メソッドの外に移動することをお勧めします。アプリケーションの残りの制御フロー/ルーターロジックと一緒に置くと、より明確で便利になります。Fetch は、promise インターフェイスを実装する jqXHR オブジェクトを返します。次のようなことができるようにします。

var contactsCollection = new ContactsCollection({});
var p = contactsCollection.fetch();

p.done(function() { ... });
p.error(function() { ... });
p.always(function() { ... });
于 2013-04-09T17:04:38.233 に答える