2017-02-03 45 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

感谢它的工作原理:) –