Marionette.ItemView渲染事件

时间:2015-11-11 16:34:20

标签: javascript backbone.js javascript-events marionette backbone-views

早上好!

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

我有这样的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'
    },

以便在呈现playerRendered时调用<player>

2 个答案:

答案 0 :(得分:1)

如果要在呈现ItemView本身时运行某些代码,请使用onRender

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

Marionette没有为正在呈现的ItemView部分内置事件。

答案 1 :(得分:1)

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

如果你想要一个用CollectionViews和CompositeViews设置视图的例子,请查看这个五张牌的四手牌的小提琴,所有牌都有随机值:http://jsfiddle.net/kjdgygy5/