2012-08-29 36 views
2

我有一個主幹應用程序,它返回一個分頁的集合,我把它放到一個表中。我可以在時間1列應用過濾器,如下圖所示:主幹分頁 - 在1個以上的字段上使用setFilter

查看:

(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上過濾,其中有一個Owner:Bob。目前,我只能過濾帳戶或所有者。

+0

對此有何更新? – bikedorkseattle

+0

沒有對不起,我放棄了這個並且使用了Knockout! – CallumVass

回答

0

我不熟悉setFilter方法,但爲什麼不使用下劃線?一個例子是:

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

據我知道你可以傳遞給SeFilter數組值fields

因此,例如,你能避免使用選擇列表,只是設置:

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

是的,但是我如何過濾每個字段?所以帳戶:123,所有者:鮑勃 – CallumVass

+0

我不認爲你可以與當前版本的Backbone.Paginator。您應該重寫其_filter方法,因爲它實際上只是在您設置的每個字段上循環以匹配過濾器值。 – Ingro

+0

這就是我想要做的事情,我確實看過'setFieldFilter'函數,但我不知道如何使用它? – CallumVass

相關問題