未捕获NoElError:必须为区域指定“el”

时间:2013-12-30 12:06:00

标签: backbone.js marionette

我正在尝试将此代码用于视图动画并将其命名为BaseView

https://gist.github.com/brian-mann/3947145

然后像这样扩展视图:

define(['underscore',
    'handlebars',
    'views/BaseView',
    'text!templates/components/login.tmpl'
], function (
    _,
    Handlebars,
    BaseView,
    loginTemplate
) {
    'use strict';

    var LoginView, errorMap;

    LoginView = BaseView.extend({

        compiledTemplate: Handlebars.compile(loginTemplate),

        events: {
        'submit #loginForm': 'login'
        },

        initialize : function(options){
             this.proxyLoginSuccess = options.loginSuccess;
           this.errorMap = options.errorMap;
        }...
    });

    return LoginView;
});

它给了我这个错误:Uncaught NoElError: An 'el' must be specified for a region.

我尝试删除this.ensureEl();,但没有任何区别。感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

你似乎不清楚一些木偶的概念。您链接的代码不是视图,它是一个木偶区域,因此用于show视图,而不是从代码中扩展。这就是你如何使用它(例如):

myApp.addRegions({
  fadeRegion: FadeTransitionRegion.extend({
    el: "#some-selector"
  })
});

然后,您实例化一个视图实例并显示它:

var myView = new LoginView({
  el: "#another-selector"
});
myApp.fadeRegion.show(myView);

在任何情况下,您的视图都需要在视图定义中定义el属性,或者在实例化时(如上所述)。

如果您仍然对这些属性感到困惑,并在视图定义或运行时指定它们,我建议您阅读free preview到我的Marionette book,其中会详细说明。