Backbone.js可以在集合的添加处理程序中调用视图上的方法吗?

时间:2011-12-12 22:21:33

标签: javascript backbone.js decoupling

我在骨干中有一个集合...在初始化方法中我正在做这个....我想在这个集合中添加一个项目时重新呈现一个视图。

initialize: function (models, options) {

        this.bind('add', function () {
            NS.discussionView.reRender();
        });
    }

这个解决方案非常有效,但mycoworker说我完全反对骨干的设计目标。有没有更好的方法来做这个或这是一个好的做法?这些问题有点主观,我真的想知道我应该如何正确地做这样的事情。感谢您的任何反馈或建议。

回应答案...... 那么对象模型更深。 discussionView有一个discussionModel,它有一个topic属性,它是主题模型的主干集合。每个主题都有一个回复模型的回复集合。当回复添加到主题时,我需要再次呈现讨论视图。如何正确设置该链?

1 个答案:

答案 0 :(得分:3)

简单地反转依赖关系:视图可能并且应该依赖于模型,但不是相反。这样,单个模型可能会被多个视图使用(简单,详细等),您可以在不修改模型的情况下添加视图。

model.bind('add', function () {
    this.render();
});

还希望render()方法名称遵循Backbone.js命名约定。