木偶+ RequireJS:在ItemView.render()中执行一个需求

时间:2013-03-11 06:15:00

标签: requirejs marionette

我尝试加载并呈现其他视图异步并将它们附加到ItemView。

简化代码 - 为什么$el未在require()的{​​{1}}块中定义 - 我在这里缺少什么?我没有正确使用RequireJS,还是使用Marionette,或者只是我对javascript缺乏经验?

建议的方法是什么?它需要是动态的,因为在运行时可以获得额外的部分视图,我还不知道插件是否已经注册。

render()

2 个答案:

答案 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;
 }

局部变量在绑定函数内不可见。不过,您可以安全地使用thisthis.$el