gpt4 book ai didi

backbone.js - 渲染封闭的 Marionette View

转载 作者:行者123 更新时间:2023-12-04 18:44:09 24 4
gpt4 key购买 nike

再次渲染时,关闭的 Marionette View 是否不应该重新委托(delegate)定义的事件(事件、模型事件、集合事件)?

似乎我必须在关闭并重新渲染 View 后手动调用 delegateEvents。否则 View 将无法按预期工作。

http://jsfiddle.net/4DCeY/

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();
});

最佳答案

如果我理解你的问题是正确的,关于这个有多个开放的 github 问题。

例如:

https://github.com/marionettejs/backbone.marionette/pull/654
https://github.com/marionettejs/backbone.marionette/issues/622

上次我检查时,Derick(Marionette 的创建者)并不认为重用封闭 View 应该是区域应该做的事情。

所以你可以

  • 只需创建一个新 View 并显示一个
  • 手动调用delegateEvents - 但我现在不记得有多个事件绑定(bind)的问题,所以要小心那个(现在不在工作,所以不能偷看代码,抱歉)
  • 编写自己的区域管理器
  • 或等待,看看 Derick 是否会合并其中一个拉取请求
  • 关于backbone.js - 渲染封闭的 Marionette View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17920499/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com