我正在構建一個帶有Backbone和Requirejs的單頁應用程序。如何使用requirejs創建模塊的實例並將其傳遞給另一個模塊?
現在我已經從我的模塊文件返回一個新的實例,與結尾的文件:
return new moduleName;
這個工作確定,直到我不得不參數傳遞給集合的初始化方法。由於初始化是在創建實例時調用的,所以我將「new」從return語句中移開。
return mymoduleName;
並實例在我的路由器的參數的集合:
myCollection = new library({paramname: "value"});
這確實是創造了「庫」的實例 - 在我的路由器引入的定義塊,但我怎麼把它傳遞到集合負責渲染的視圖?
我的觀點類具有相同的依賴於它的定義塊,並在其初始化我把它綁定到集合的復位:
this.collection = library;
_.bindAll(this, 'render');
this.collection.bind('reset', this.render);
這從集合類帶走了「新」的工作之前(其上追溯是毫無意義的!)但現在視圖永遠不會呈現,因爲它已經在路由器中實例化了 - 我如何將同一個實例傳遞給視圖?
謝謝,同時我得到它與以下工作 - 不完全確定,如果這實際上是你說的: 庫=新庫({參數名稱:「價值」}); myView =新視圖({collection:library}); 然後,在視圖的初始化中: 初始化:函數(opts){ \t this.collection = opts.collection; } – wannabeartist
所以基本上,我有點困惑「不要在初始化中設置集合」 - 是不是在構造函數參數被處理? – wannabeartist
初始化時無需執行'this.collection = opts.collection',如果您查看Backbone文檔,它會說:「創建新視圖時,您傳遞的選項將作爲this.options附加到視圖中,以備將來使用有幾個特殊選項,如果通過,將直接附加到視圖:model,collection,el,id,className,tagName和attributes。「 (http://documentcloud.github.com/backbone/#View-constructor) – slurmomatic