我正在尝试使用2个搜索参数搜索集合。目前我只能通过1个搜索参数进行搜索,这是我的工作单参数搜索。
search: function(filterValue) {
var filterValue = filterValue.toLowerCase();
var matcher = new RegExp(filterValue);
var found_models = this.filter(function(model) {
return matcher.test(model.get('name').toLowerCase());
});
return found_models;
},
还可以搜索名称以外的其他属性,我想也许是这样的,
search: function(filterValue) {
var filterValue = filterValue.toLowerCase();
var matcher = new RegExp(filterValue);
var found_models = this.filter(function(model) {
return matcher.test(model.get('name').toLowerCase());
});
var found_models = this.filter(function(model) {
return matcher.test(model.get('clients').get('name').toLowerCase());
});
return found_models;
},
但这些只是覆盖与name参数匹配的任何结果。
答案 0 :(得分:1)
诀窍是返回filter
。如果您返回true
该模型已添加到输出中。这意味着您可以在过滤器功能中进行任何匹配,甚至是双重匹配!
所以代码就像:
var found_models = this.filter(function(model) {
return matcher.test(model.get('name').toLowerCase()) && matcher.test(model.get('clients').get('name').toLowerCase());
});
这会给true
&& true
,会让true
返回。
答案 1 :(得分:0)
像where
方法?
var friends = new Backbone.Collection([
{name: "Athos", job: "Musketeer"},
{name: "Porthos", job: "Musketeer"},
{name: "Aramis", job: "Musketeer"},
{name: "d'Artagnan", job: "Guard"},
]);
var musketeers = friends.where({job: "Musketeer"});
alert(musketeers.length);