gpt4 book ai didi

javascript - 当其中一个模型发生更改时,如何为 Backbone.js 中的 Collection View 附加事件处理程序?

转载 作者:行者123 更新时间:2023-12-02 19:55:17 26 4
gpt4 key购买 nike

我有一个呈现任务列表的 View :

ProjectManager.Views.TasksIndex = Support.CompositeView.extend({
initialize: function() {
_.bindAll(this, "render");
this.collection.bind("add", this.render);
},

render: function () {
this.renderTemplate();
this.renderTasks();
...
},

renderTemplate: function() {
$(this.el).html(JST['tasks/index']({ tasks: this.collection }));
},

renderTasks: function() {
var self = this;
this.collection.each(function(task) {

// only display draft tasks
if (task.get('status') === "draft") {
var taskItem = new ProjectManager.Views.TaskItem({ model: task });
self.renderChild(taskItem);
self.$('#tasks-list').append(taskItem.el);
}
});
}
....
});

我为集合中的每个任务渲染一个 View 。我希望能够删除任务。
当用户单击任务的删除按钮后,我将任务模型上的状态属性设置为“已删除”。现在,我需要在 TasksIndex View 中绑定(bind)一个事件处理程序来重新渲染集合。
我试过了

this.collection.bind("change", this.render);

但是没有成功。
如何将 subview 中模型上发生的事件传播到父 View ?

最佳答案

this.collection.bind('change', this.render) 应在模型状态更改时调用 render 方法。

您能否在渲染方法中添加 console.log('render called'); 行,以查看模型状态更改时是否正在调用它。

我认为正在调用渲染方法,但其他地方有一些逻辑未正确显示任务。

关于javascript - 当其中一个模型发生更改时,如何为 Backbone.js 中的 Collection View 附加事件处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8736016/

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