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/
我很难解释我在寻找什么,所以我将从代码开始。
我有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/