Javascript 主干筛选器集合是否按名称返回模型?
我试图通过模型属性(名称)过滤集合 我有一个小问题,虽然,我的搜索参数目前只是简单的“a”。因此,它应该返回所有名称中带有“a”的模型Javascript 主干筛选器集合是否按名称返回模型?,javascript,backbone.js,backbone.js-collections,Javascript,Backbone.js,Backbone.js Collections,我试图通过模型属性(名称)过滤集合 我有一个小问题,虽然,我的搜索参数目前只是简单的“a”。因此,它应该返回所有名称中带有“a”的模型 然而,我有两个模型,应该返回这些名称是“阿巴”和“AAAS”。我假设“AAAS”没有返回,因为我的搜索词是小写的,模型名是大写的,所以我添加了一个.toLowerCase(),但它仍然只返回“abba”为什么?根据(主干网的集合。过滤器使用它),您的筛选的数组应该是空的-它应该只包含谓词返回真值的元素-您的函数返回的未定义的是假值。试试这个: ... if(mo
然而,我有两个模型,应该返回这些名称是“阿巴”和“AAAS”。我假设“AAAS”没有返回,因为我的搜索词是小写的,模型名是大写的,所以我添加了一个
.toLowerCase()
,但它仍然只返回“abba”为什么?根据(主干网的集合。过滤器使用它),您的筛选的
数组应该是空的-它应该只包含谓词返回真值的元素-您的函数返回的未定义的
是假值。试试这个:
...
if(model.get('name').toLowerCase().indexOf(searchParam.toLowerCase()) !== -1) {
model.trigger('show');
return true;
} else {
model.trigger('hide');
}
...
现在,filtered
应该在它的name
中包含所有带有searchParam
的模型(不区分大小写)。值得补充的是,如果在byName(…)
方法的其余部分不需要filtered
模型数组,最好使用每个(…)
方法。也就是说,this.each(function(model){…}
。我做了一个,你的代码返回abba和AAAS。因此,据我所知,问题是其他的。
...
if(model.get('name').toLowerCase().indexOf(searchParam.toLowerCase()) !== -1) {
model.trigger('show');
return true;
} else {
model.trigger('hide');
}
...