2014-01-10 57 views
0

我有一個選擇表單,有多個選項用於排序。更新Backbone.js中的比較器

我正在監聽此窗體上的更改,並且想要用輸入值更新比較器並從那裏對我的集合進行排序。

我的想法是嘗試直接與酒店設置:

$(document).ready(function(){ 
    $('#sortBy').change(function() 
     { 
     collection.set({ 'comparator': $('#sortBy').val() }) 
     alert("This worked"); 
     }); 
}); 

但我沒有任何運氣。

如何在源代碼中不更新比較器?

回答

0

直接在集合上設置比較器將不起作用。您可以撥打

collection.sortBy(comparator); 

collection.sort(comparator); 

sortBy是下劃線sortBy方法:在這裏看到的文檔http://underscorejs.org/#sortBy 排序是(我相信)JavaScript的排序:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

+0

凡在我的骨幹代碼會我打電話給這個?在定義所有內容後調用它有螢火蟲說集合是未定義的(與使用this.collection相同) – Ladybro

+0

在視圖中嘗試事件:{'click #sortBy':'myListener'},然後,myListener:function(e){ this.collection.sortBy(e.currentTarget.value)} //未經測試,但我認爲你的想法:) – mcbex

+0

順便說一句,你可以擺脫document.ready包裝。如果您在視圖上使用事件散列,則不需要它,因爲主幹會將所有內容委託給此。$ el – mcbex