骨干嵌套 - 通用架构

时间:2013-01-19 01:31:44

标签: javascript backbone.js nested

我一直在做一些研究,并没有看到我的具体用例的例子。所以一般的架构建议/资源将不胜感激。

我正在创建一个地址簿。

  • 用户创建联系人和群组。
  • 创建的联系人位于常规池中。
  • 联系人可以与多个群组相关联。
  • 如果更新了联系人,则会在所有组中更新。
  • 如果从常规池中删除了某个联系人,则会从所有关联的组中删除该联系人。

为联系人和群组创建单独的集合很容易,但现在我有点卡住了。

看来Backbone-associationsBackbone-relational甚至nesting.js会提供我正在寻找的内容。看起来Backbone-association比Backbone-relational更具性能。有没有人有任何插件的经验?是否有更简单的手动代码解决方案?

2 个答案:

答案 0 :(得分:1)

首先,您应该尝试使用标准骨干方法找到解决方案,并且只有在您不能的情况下 - 您应该采用侧面应用。

至于您的应用程序 - 有一个解决方案。您应该将联系人集合和组集合存储在两个不同的分隔集合中。联系人集合中的每个模型都应该与其组元素“链接” - 例如,仅包含其组模型的其他字段“组”(如果您知道,当您操作同一个对象时,JavaScript会运行链接,因此它是轻量级的)< / p>

收集此类联系人后,您可以编写一个特殊方法,该方法使用按组排序的此集合(为此实现集合比较器方法)并返回任何有用的对象进行渲染。例如:

{"group1": elements_of_group1, ...}

作为移除任何联系人的副作用,您已经拥有一致的列表。

答案 1 :(得分:1)

您是否可以拥有代表组和集合的骨干模型。该组可以包含一系列contactIds:

var Contact = Backbone.Model.extend({
    defaults: {
        name: "SomeName",
        phone: "1234567890",
        ...
    }
});

var Group = Backbone.Model.extend({
    defaults: {
       name: "someName",
       contactIds: [1, 2, 3, 4]
    }
});

var Contacts = Backbone.Collection.extend({
    model: Contact
});

如果您需要访问存储在给定组中的联系人的详细信息,您可以执行以下操作:

contacts.get(id); 

返回CRUD操作的个人联系信息。您可以类似地维护一组组。

相关问题