【问题标题】:Backbone Paginator - Using setFilter on more than 1 fieldBackbone Paginator - 在多个字段上使用 setFilter
【发布时间】:2012-08-29 19:02:17
【问题描述】:

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

【问题讨论】:

  • 不抱歉,我放弃了这个并改用了 Knockout!

标签: backbone.js


【解决方案1】:

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

var filteredContent = _.filter(this.collection, function(model)
{  
    return model.Account === 123 && model.Owner === "Bob"; 
});

【讨论】:

    【解决方案2】:

    据我所知,您可以将fields 的数组值传递给SeFilter

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

    var fields = ["Account","Owner"];
    

    【讨论】:

    • 是的,但是如何过滤每个字段?所以帐户:123,所有者:Bob
    • 我认为您不能使用当前版本的 Backbone.Paginator。您应该覆盖它的 _filter 方法,因为实际上它只是在您设置的每个字段上循环以匹配过滤器值。
    • 这就是我实际上想要做的,我确实看过setFieldFilter 函数但我不知道如何使用它?
    猜你喜欢
    • 2022-11-01
    • 2013-12-23
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多