Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干嵌套-通用体系结构_Javascript_Backbone.js_Nested - Fatal编程技术网

Javascript 主干嵌套-通用体系结构

Javascript 主干嵌套-通用体系结构,javascript,backbone.js,nested,Javascript,Backbone.js,Nested,我一直在做一些研究,没有看到我的特定用例的例子。因此,一般架构建议/资源将不胜感激 我正在创建一个地址簿 用户创建联系人和组 创建的联系人位于常规池中 联系人可以与多个组关联 如果更新了联系人,则会在所有组中更新该联系人 如果从常规池中删除联系人,则该联系人将从所有关联的组中删除 为联系人和组创建单独的集合很容易,但现在我有点卡住了 看起来,或者甚至可以提供我所需要的。看起来主干关联比主干关系关联性能更好。有没有人有使用这些插件的经验?有更简单的手工编码解决方案吗?首先,您应该尝试使用标准主

我一直在做一些研究,没有看到我的特定用例的例子。因此,一般架构建议/资源将不胜感激

我正在创建一个地址簿

  • 用户创建联系人和组
  • 创建的联系人位于常规池中
  • 联系人可以与多个组关联
  • 如果更新了联系人,则会在所有组中更新该联系人
  • 如果从常规池中删除联系人,则该联系人将从所有关联的组中删除
为联系人和组创建单独的集合很容易,但现在我有点卡住了


看起来,或者甚至可以提供我所需要的。看起来主干关联比主干关系关联性能更好。有没有人有使用这些插件的经验?有更简单的手工编码解决方案吗?

首先,您应该尝试使用标准主干方法找到解决方案,只有在您不能找到的情况下,您才应该使用辅助应用程序

对于您的应用程序,有一个解决方案。您应该将联系人集合和组集合存储在两个不同的独立集合中。contacts集合中的每个模型都应该有到其组元素的“链接”——例如,只包含其组模型的其他字段“groups”(如果您知道,JavaScript在您操作同一对象时会操作链接,因此它是轻量级的)

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

{"group1": elements_of_group1, ...}

当你删除任何联系人时,你已经有了一个一致的列表

您能否拥有一个表示组和集合的主干模型。该组可以包含一组ContactID:

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操作信息。您可以类似地维护组的集合