【问题标题】:Backbone.js is it ok to call a method on a view in the add handler of a collection?Backbone.js 可以在集合的添加处理程序中调用视图上的方法吗?
【发布时间】:2011-12-12 22:21:33
【问题描述】:

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

initialize: function (models, options) {

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

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

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

【问题讨论】:

    标签: javascript backbone.js decoupling


    【解决方案1】:

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

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

    也更喜欢 render() 方法名称以遵循 Backbone.js 命名约定。

    【讨论】:

    • 嗯,对象模型更深。讨论视图有一个讨论模型,它有一个主题属性,它是主题模型的骨干集合。每个主题都有一个回复模型的回复集合。将回复添加到主题时,我需要再次呈现讨论视图。如何正确设置该链?
    • 这很成功。当我创建第一级子视图时,我为每个实例提供了一个 parentView 属性。我绑定每个主题的回复集合添加处理程序并调用this.parentView.render()。奇迹般有效。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多