我正在尝试异步加载和渲染其他视图并将它们附加到 ItemView。
简化代码-为什么$el
没有在require()
块中定义render()
-我在这里缺少什么?我没有正确使用 RequireJS,还是 Marionette,或者只是我对 javascript 缺乏经验?
推荐的方法是什么?它需要是动态的,因为在运行时可能会提供其他部分视图,而我还不知道插件已注册。
define(['require','marionette', 'App', 'swig', 'backbone.wreqr','text!./settings.html'],
function (require,Marionette, App,Swig, Wreqr, settingsHtml )
{
var sectionViews = ['./settingscontent/GeneralView'];
var SettingsView = Marionette.ItemView.extend(
{
template: Swig.compile(settingsHtml),
commands: new Wreqr.Commands(),
initialize: function ()
{
this.commands.addHandler('save', function (options, callback)
{
callback();
});
Marionette.ItemView.prototype.initialize.apply(this, arguments);
},
render: function()
{
Marionette.ItemView.prototype.render.call(this);
var $el = this.$el;
var self = this;
require(sectionViews, function (View)
{
$el.find('div.tab-content').append(new View(self.model).render().$el);
// $el is not defined
// self != outer this - $el is an empty div
});
return this;
}
}
return SettingsView;
})