木偶投掷错误为" Uncaught NoElError:An" el"必须为某个地区指定。"

时间:2014-09-06 16:21:08

标签: jquery backbone.js marionette

在我的应用中,我有一个类似的地区:

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 个答案:

答案 0 :(得分:1)

我正在尝试关注并理解您的代码,但这真的很难。如果您可以修复缩进,并且可能重新排序并删除所有不相关的样板代码,这将有所帮助。

无论如何,我建议你使用Marionette.Application,你可以直接附加区域,而不是你正在创建的这个容器:

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

然后,您将创建AppLayout视图,并将其附加到应用的根区域:

SocialApp.root.show(new AppLayout)