有人構建應用爲我們,爲我提供的代碼,所以我可以通過它, 我注意到了這一點,起初看起來不錯,甚至好的讓集合管理他的數據 但過了一會兒,我開始在這個想法Backbone.js的取收集從它的初始化方法
這樣想着可能的陷阱: 是從它自己的initialize方法獲取一個集合的數據是個好習慣。
例如:
var Book = Backbone.Model.extend({});
var Books = Backbone.Collection.extend({
url: '/books',
initialize: function(){
// do some logic here
// if collection is empty, fetch from server
if(this.size() == 0)
this.fetch();
}
});
我問這個,因爲我覺得它可能是在下列情況下一個問題:
假設我們是在一個routeAction:
books: function() {
var books = new Books();
var bookList = new BookList({ collection: books });
}
ISN」 t這種情況可能失敗,如果提取比視圖的初始化更快,視圖會綁定到重置事件,那麼重置會在觸發之前觸發視圖的初始化已被執行?
我錯了這一點,或者我應該提交票證以修復此問題。
感謝您的洞察力,我會要求他相應地編輯代碼。你是對的幾點,雖然我相信他的情況下,目前的應用程序只創建1個集合,所以每次創建集合時加載並不是一個問題,但我可以看到它應該是一個問題,當應用程序正在在明年晚些時候的版本2或3中,可能會添加其他集合。 – Sander 2012-03-07 18:14:18
正如你暗示你的問題,這是一個使用正確方法的問題。在'initialize'內部讀取不會產生錯誤。這是無效的,醜陋的,*原則上*錯誤。 – ggozad 2012-03-07 18:22:08
@ mu-is-too-short謝謝!我花了20分鐘試圖找出列表中的代碼塊並失敗。我很想念我的... ... – ggozad 2012-03-07 18:24:06