如何在JSON数组字段的基础上从主干集合中提取模型
How to extract model from backbone collection on the basis of a field which is array of JSON
我有一个模型集合,其中模型包含一个字段,比如data,它是JSON数组。
data [{x : 3, y:4}]
现在我想使用主干收集的函数作为:
var model= coll.where ({
data : data
})
它没有输出。我不确定我做得对还是少了什么。请指导我这个解决方案
如果你看看where
是如何工作的:
where: function(attrs, first) {
if (_.isEmpty(attrs)) return first ? void 0 : [];
return this[first ? 'find' : 'filter'](function(model) {
for (var key in attrs) {
if (attrs[key] !== model.get(key)) return false;
}
return true;
});
}
您将看到它只是扫描模型并使用!==
比较属性。使用!==
或===
(或者!=
或==
)比较数组时,比较的是引用,而不是内容;例如,这是错误的:
[1] === [1]
结果是,使用where
搜索数组效果不佳,where
是搜索简单标量值的快捷方式。
如果你需要搜索一个数组,那么你可以直接使用filter
,也可以使用_.isEqual
来帮助你比较:
var models = coll.filter(function(m) {
return _.isEqual(m.get('a'), data);
});
如果您想要一个匹配,请使用find
而不是filter
。
演示:http://jsfiddle.net/ambiguous/PZZv4/1/
相关文章:
- 为集合分配大量的模型弹药
- 如何使用backbone.js从集合中获取模型名称
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- 主干-从模板中迭代的集合中获取特定的模型
- 如何更改与Backbone集合中的模型相关联的几个元素的css属性
- 从骨干集合筛选模型,然后为这些模型设置属性
- 主干模型:保存时保留集合
- 主干输出用于集合模型的空数组
- 无集合模型
- 无法访问 Backbone.js 集合/模型从模板中
- 在主干应用中持久更新集合模型的正确方案
- Backbone 如何在需要时更新集合模型
- 主干:访问集合模型
- 制作模型属性“;独特的“;在集合模型中
- 打印出集合和集合.模型给出了不同的结果
- 在将集合模型的旧值设置为新值后,获取它们的主干模型
- Backbone.js中的嵌套集合/模型视图管理
- 将Backbone.js JSON响应填充到嵌套集合/模型中的嵌套集合中
- 骨干-在初始化集合模型时传递数据
- 从嵌套的集合模型javascript创建JSON