Javascript 如何基于JSON数组字段从主干集合中提取模型
我有一个模型集合,其中模型包含一个字段,比如数据,它是JSON的数组Javascript 如何基于JSON数组字段从主干集合中提取模型,javascript,backbone.js,Javascript,Backbone.js,我有一个模型集合,其中模型包含一个字段,比如数据,它是JSON的数组 data [{x : 3, y:4}] 现在我想使用主干收集的where功能: var model= coll.where ({ data : data }) 它没有输出。 我不确定我是否做得对,还是遗漏了什么。如果您了解该解决方案的工作原理,请指导我: 您将看到,它只需扫描模型并使用比较属性==。当您使用时==或===(或!=或=)要比较数组,比较的是引用,而不是内容;例如,这是错误的: [1] === [1] 结果是
data [{x : 3, y:4}]
现在我想使用主干收集的where功能:
var model= coll.where ({
data : data
})
它没有输出。
我不确定我是否做得对,还是遗漏了什么。如果您了解该解决方案的工作原理,请指导我:
您将看到,它只需扫描模型并使用比较属性==代码>。当您使用时==
或===
(或!=
或=
)要比较数组,比较的是引用,而不是内容;例如,这是错误的:
[1] === [1]
结果是,使用搜索数组时效果不佳,其中
是搜索简单标量值的快捷方式
如果需要搜索数组,则可以直接使用,也可以使用来帮助比较:
var models = coll.filter(function(m) {
return _.isEqual(m.get('a'), data);
});
如果需要一个匹配项,请使用而不是过滤器
演示:是每个模型中的数据还是您的模型包装在数据中?
因此,无论您在哪里向模型model.set(model.toJSON().data)
添加值,都要添加这一行,这样您的模型将直接包含属性,并且您可以遵循backbonejs.org中的示例,但是我在一个模型中同时包含了scaler和array值。在这种情况下,什么是好方法?是的,filter
/find
与\一起使用。isEqual
适用于标量和数组。
var models = coll.filter(function(m) {
return _.isEqual(m.get('a'), data);
});