2017-02-03 77 views
1

我希望有人可以給我一些有用的提示。主幹命名空間打開視圖

app.js

;(function(app){ 

'use strict'; 

app.on('start', function(){ 
    var view = new app.base.base_documents.views.DokumentenView(); 
    view.render(); 
}); 

})(window.app);

是否有寫的follwing代碼

var view = new app.base.base_documents.views.CustomView(); 
view.render(); 

也許有一種方法叫我認爲像這樣的短,更好的辦法:

var view = CustomView(); 
view.render() 

我views.js

;(功能(app){

'use strict'; 

app.module('base.base_documents.views', function (module, App, Backbone, Marionette) { 


    module.CustomView = Marionette.CompositeView.extend({ 
    ... 
    }); 
}(app)); 

回答

1

視您的看法保持空間(namespace明智),你可以通過app.base.base_documents.views到IIFE:

;(function(app, views){ 

    'use strict'; 

    app.on('start', function(){ 
     var view = new views.DokumentenView(); 
     view.render(); 
    }); 
})(window.app, window.app.base.base_documents.views); 

但你可能有其他嵌套的命名空間內的觀點,因此對於那些你需要做的是相同的 - 這最後給出了類似的結果。您可以在渲染視圖時逐層查看命名空間,或者在傳遞參數時執行。

+0

謝謝。如果我做你的解決方法,我收到以下錯誤消息:backbone.marionette.js:2171 Uncaught TypeError:this._initChildViewStorage不是函數(...)任何想法?構造函數\t @ \t backbone.marionette.js:2171 構造函數\t @ \t backbone.marionette.js:2881 孩子\t @ \t Backbone.js的:1884年 (匿名函數)\t @ \t VM1691:1次 成功\t @ \t app.js:38 火\t @ \t的jquery.js:974 fireWith \t @ \t jquery.js:1084 done \t @ \t jquery.js:7803 回調\t @ \t jquery.js:8518 –

+0

不知道這可能是什麼。聽起來特定於您的應用程序。嘗試驗證'views'參數確實是你期望的,並且'DokumentenView'出現在對象內('views')。 – MartinHN

+1

感謝它的工作原理:) –