2014-09-06 67 views
0

在我的应用程序,我有一个地区,如:Marionette抛出错误为“Uncaught NoElError:必须为区域指定”el“。

define(['jquery','underscore','backbone','marionette'], 
    function ($,_,Backbone,Marionette) { 
    "use strict"; 
    socialApp = window.socialApp || {}; 

    socialApp.AppLayout = Backbone.Marionette.LayoutView.extend({ 
     template:'#appTemplate', 
     regions: { 
      header : '#header', 
      content : '#content', 
      footer : '#footer' 
    }, 
    initialize:function(){ 
      console.log('layout intialized'); 
    } 
    }); 

    return socialApp.AppLayout; 
}); 

追加我区我有这样的容器:

define(['jquery','underscore','backbone','marionette'], 
    function ($,_,Backbone,Marionette) { 
    "use strict"; 
    socialApp = window.socialApp || {}; 

    socialApp.AppRegion = Backbone.Marionette.Region({ 
     el:'#wrapper', 
    initialize:function(){ 
     console.log('from wrapper'); 
    } 
    }); 

    return socialApp.AppRegion; 
}); 

现在我呼吁这两个功能:

socialApp.Layout = new appLayout(); //calling layout 
    socialApp.AppContainer = new appContainer; //calling container 
    socialApp.AppContainer.show(socialApp.Layout); //i am showing to container 

但是我得到一个错误:

Uncaught NoElError: An "el" must be specified for a region. 

如何解决这个问题?这里有什么问题,请有人指出我吗?

这里是我的其他信息

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'marionette', 
    './model/loginModel', 
    './views/loginView' 
    ],function ($,_,Backbone,Marionette,loginModel,loginView) { 
    "use strict"; 
    socialApp = window.socialApp || {}; 

    socialApp.loginController = Marionette.Controller.extend({ 
     _initialize:function(){ 
      console.log('initi') 
      this.loginView = new loginView({model:new loginModel}).render().el; 
      console.log(this.layout.header.show(this.loginView)); 
     } 
    }); 

    return socialApp.loginController; 
}); 

在此先感谢控制器。

回答

1

我试图去关注和理解你的代码,但它确实很难。如果你可以修复缩进,可能还有重新排序的东西,并删除所有不相关的样板代码,这将有所帮助。

无论如何,我会建议你使用Marionette.Application,对此您可以直接连接的区域,而不是要创建此容器的事情:

var SocialApp = new Marionette.Application; 
SocialApp.addRegions({ root: '#wrapper' }); 

那么你会创建AppLayout视图,并附加到该应用程序的根区域:

SocialApp.root.show(new AppLayout) 
相关问题