在再次渲染时,闭合的Marionette视图是否不应重新委派已定义的事件(events,modelEvents,CollectionEvents)?
似乎我必须在关闭并重新渲染视图后手动调用delegateEvents。否则视图将无法按预期工作。
var app = new Marionette.Application();
app.addRegions({
main: '.main'
});
var MyView = Marionette.ItemView.extend({
template: _.template('Hi, I\'m a view! Foo is: <%= foo %>'),
modelEvents: {
'change': 'onChange'
},
onChange: function() {
alert('change!');
}
});
var Model = Backbone.Model.extend({});
app.addInitializer(function() {
var m = new Model({foo: 'bar'});
var myView = new MyView({
model: m
});
app.main.show(myView);
myView.close();
app.main.show(myView);
m.set({foo: 'baz'});
});
$(document).ready(function(){
app.start();
});
答案 0 :(得分:6)
如果我理解你的问题,那么就会有多个开放的github问题。
例如:
https://github.com/marionettejs/backbone.marionette/pull/654 https://github.com/marionettejs/backbone.marionette/issues/622
上次我查了一下,Derick(木偶的创造者)并不觉得重复使用封闭的观点应该是地区应该做的事情。
所以你可以
答案 1 :(得分:0)
几点:
我用以下内容改变了jsfiddle:
以下是更正过的jsfiddle http://jsfiddle.net/4DCeY/1/:
app.addInitializer(function() {
var m = new Model({foo: 'bar'});
var myView1 = new MyView({
model: m
});
var myView2 = new MyView({
model: m
});
app.main.show(myView1);
app.main.show(myView2);
m.set({foo: 'baz'});
});
和
onChange: function() {
alert('change!');
this.render();
}