我有一个骨干应用程序,它返回一个我放入表中的分页集合。我可以按时在1列上应用过滤器,如下所示:
查看:
(function (views) {
views.PaginatedView = Backbone.View.extend({
events: {
'click a.filter': 'filter'
},
getFilterField: function () {
return $('#filterByOption').val();
},
getFilterValue: function () {
return $('#filterString').val();
},
filter: function (e) {
e.preventDefault();
var fields = this.getFilterField(); // returns a value from a dropdown
var filter = this.getFilterValue(); // returns a value from my input
this.collection.setFilter(fields, filter);
this.collection.pager();
}
});
})(app.views);
模板:
<select id="filterByOption">
<option value="Account">Account</option>
<option value="Owner">Owner</option>
</select>
<span class="cell sort">
<input id="filterString" type="text" class="cell" />
<a href="#" class="filter btn small">Filter</a>
</span>
我的问题是:我想对其他字段应用更多过滤器,但据我所知,setFilter
函数每次只允许过滤1个字段。例如:我想过滤Account:123,其中有一个所有者:Bob。目前我只能过滤账户或所有者。
答案 0 :(得分:0)
我不熟悉setFilter方法,但为什么不使用下划线?一个例子是:
var filteredContent = _.filter(this.collection, function(model)
{
return model.Account === 123 && model.Owner === "Bob";
});
答案 1 :(得分:0)
据我所知,您可以将SeFilter
的数组值传递给fields
。
因此,例如,您可以避免使用选择列表,只需设置:
var fields = ["Account","Owner"];