2014-09-06 55 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) 
相關問題