Lor*_*ard 3 javascript backbone.js marionette
我想重新渲染一个列表,使用Marionette.ItemView
相应的模型进行ItemView更改.
有关激活此任务的最佳方法的任何想法?
// Collection passed to Marionette.CompositeView
myCollection.attributes = [
{
id: 1,
name: 'bar'
closed: false
},
….
];
Run Code Online (Sandbox Code Playgroud)
// Marionette.ItemView
myModel.set({
closed: true
}); // when this model change I would like to re-render the copositeView
// or remove the Marionette.ItemView
Run Code Online (Sandbox Code Playgroud)
PS:
如果我尝试下面的代码(1)Marionette.ItemView,
当我保存模型时,我得到以下错误(2).
(1)
// Marionette.ItemView
initialize: function () {
this.model.on('change', this.render);
}
Run Code Online (Sandbox Code Playgroud)
(2)
Uncaught TypeError: Object [object Object] has no method 'serializeData'
Run Code Online (Sandbox Code Playgroud)
Bas*_*Ben 17
Marionette提供了一个modelEvents属性,负责与模型事件的正确绑定.
在ItemView中,只需添加以下内容即可在模型更改时普遍获得ItemView更新:
'modelEvents': {
'change': 'render'
},
Run Code Online (Sandbox Code Playgroud)
请享用!
要使事件绑定和解除绑定在Marionette中自动工作,您应该使用视图的bindTo方法.例如:
initialize: function() {
this.bindTo(this.model, 'change', this.render);
}
Run Code Online (Sandbox Code Playgroud)
还bindTo正确设置上下文,因此您不需要_.bindAll()它.