2014-05-23 86 views
1

這是我的情況。我在第一個視圖中收集了一個成員列表(model = member,collection = members)。然後我希望它們能夠在我的第三個視圖中顯示。問題是每次我想訪問memberList時,我必須創建一個新實例,因此數據會丟失。我正在使用require.js來模塊化視圖。我如何有效地訪問我在第一視圖中實例化的memberList變量?在requirejs中使用應用程序級持久性模型,backbonejs

回答

1

一個骯髒的方法是在你的AMD模塊中返回新的Collection()。 Require.js會緩存這一點,每次你需要它的時候它會返回同一個實例 例:

define(function(require){ 
    var Backbone = require('backbone'); 
    return new Backbone.Collection.extend({}); 
}); 

雖然原因是很難測試,我不推薦這種方式。

另一種方法是有一個對象的應用程序,你可以在你的模塊保存到收藏,模型等的引用,然後要求它像https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.application.md

另一種方法是有中保,將實例化採集,爲您和會將方法從集合中暴露給其他模塊。你需要中介而不是集合。 http://addyosmani.com/resources/essentialjsdesignpatterns/book/#mediatorpatternjavascript

由你決定,但耦合越少越好。

希望有所幫助。

+0

你能解釋一下你的意思嗎?難以測試? – blockhead

+0

如果你在初始化()中有邏輯,很難測試這個原因,所以在你需要文件的時候已經調用了initialize。只是要注意的事情。 – chchrist

相關問題