我尝试加载并呈现其他视图异步并将它们附加到ItemView。
简化代码 - 为什么$el
未在require()
的{{1}}块中定义 - 我在这里缺少什么?我没有正确使用RequireJS,还是使用Marionette,或者只是我对javascript缺乏经验?
建议的方法是什么?它需要是动态的,因为在运行时可以获得额外的部分视图,我还不知道插件是否已经注册。
render()
答案 0 :(得分:0)
为什么要尝试超载itemview.render?
为什么不使用内置的onrender事件 https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.itemview.md#render--onrender-event
来自该文件:
Backbone.Marionette.ItemView.extend({
onRender: function(){
// manipulate the `el` here. it's already
// been rendered, and is full of the view's
// HTML, ready to go.
}
});
似乎更容易,更典型的牵线木偶使用
答案 1 :(得分:0)
您需要将函数内的this
绑定到SettingsView
对象。类似的东西:
render: function()
{
Marionette.ItemView.prototype.render.call(this);
var $el = this.$el;
var self = this;
require(sectionViews, _.bind(function (View)
{
...
}, this));
return this;
}
局部变量在绑定函数内不可见。不过,您可以安全地使用this
和this.$el
。