我正在尝试将此代码用于视图动画并将其命名为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();
,但没有任何区别。感谢任何帮助。
答案 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,其中会详细说明。