Marionette.ItemView 渲染事件

Marionette.ItemView render event

我很难解释我在寻找什么,所以我将从代码开始。

我有Marionette这样的观点:

Marionette.ItemView.extend({
    model: new Models.Cards(),
    template: 'poker/cards',
    events: {
        'click player': 'playerClicked'
    },
    playerClicked: function( e ) {
        // THIS WORKS!
    }
}

我怎样才能做这样的事情:

    events: {
        'click player': 'playerClicked',
        'render player': 'playerRendered'
    },

以便在渲染 <player> 时调用 playerRendered

如果您想在呈现 ItemView 本身时 运行 一些代码,请使用 onRender:

Marionette.ItemView.extend({
  // ...
  onRender: function() {
    console.log("Rendered the ItemView!")
  }
  //...
})

Marionette 没有正在渲染的 ItemView 部分 的内置事件。

@joews 是对的。如果您想对正在呈现的 ItemView 的特定部分做出反应,您应该对整个 ItemView 的 render 事件做出反应。当您呈现 ItemView 时,它会在内存中呈现整个模板,然后将其作为一个整体附加到 DOM 。如果你想渲染一个模型集合,那么你可以使用一个集合视图,每个 ItemView 将被独立渲染。

如果您想要一个使用 CollectionViews 和 CompositeViews 设置视图的示例,请查看此 fiddle 渲染四手五张牌,所有牌都具有随机值:http://jsfiddle.net/kjdgygy5/