2

我有一个主干应用程序,它返回一个分页集合,我把它放到一个表中。我可以一次在 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 个字段。例如:我想过滤帐户:123,其中有一个所有者:鲍勃。目前我只能过滤帐户或所有者。

4

2 回答 2

0

据我所知,您可以SeFilterfields.

因此,例如,您可以避免使用选择列表而只需设置:

var fields = ["Account","Owner"];
于 2012-08-30T08:04:11.603 回答
0

我不熟悉 setFilter 方法,但是为什么不使用下划线呢?一个例子是:

var filteredContent = _.filter(this.collection, function(model)
{  
    return model.Account === 123 && model.Owner === "Bob"; 
});
于 2012-08-29T19:31:41.240 回答