【问题标题】:Backbone.js ViewsBackbone.js 视图
【发布时间】:2013-02-02 18:18:58
【问题描述】:

假设我正在创建一种社交网络。一方面,您可以搜索显示个人资料列表的人员;另一方面,您可以单击“我的朋友”按钮,该按钮也会显示个人资料列表。因此,在这两种情况下,您都会获得一份个人资料列表,但略有不同,例如,您在 srcnd 列表中没有“交朋友”按钮或每个列表项中没有任何其他差异。

我的问题是:在这种情况下,我是否应该为两个列表创建一个视图,例如“listOfProfiles”?如果是,我该如何处理这些问题或我想在两者之一中显示的任何其他内容?如果不是,为什么?

我知道这是一个普遍的问题。只是我一般是主干或 MVC 的新手,我想了解这个概念。

【问题讨论】:

    标签: model-view-controller backbone.js view


    【解决方案1】:

    Backbone.js 的优点之一是模型实例可以同时存在于多个集合中,因此,当一个模型在 1 个集合中更新时,同一实例在另一个集合中更新,触发事件两个系列和两个模型。

    这意味着您应该并且可以在您的应用程序范围内创建一个“全局”UsersCollection,您可以将所有用户实例推送到其中。

    var UserCollection = Backbone.Collection.extend({});
    var userCollection = new UserCollection();
        userCollection.update([models], {remove: false});
    

    下次您初始化第二个 UserCollection 时,您可以在 'parse' 方法上添加一个方法来获取或获取全局 usersCollection 中的模型实例,这样您就不会两次实例化具有相同 id 的模型.

    我会将集合彼此分开,因为每个集合可能附加了不同的比较器。想象一个按字母顺序列出的用户视图(朋友)和一个按另一个州列出的用户列表。

    利用多个集合中模型的单个实例的强大功能,尝试通过全局集合保持模型同步。这将是我前进的方向。

    【讨论】:

    • 谢谢!!所以你的意思是 1 个模型(用户)一个视图(用户列表)和各种集合(朋友、关注者、搜索结果、关注等)?
    • 是的,尝试在每个集合中为 1 个特定用户提供相同的模型实例,因为每个集合都有对应的视图。
    猜你喜欢
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    相关资源
    最近更新 更多