2012-11-05 28 views
0

我使用以下功能基於一個整數值進行排序的observableArray稱爲排序:環路和重新排序可觀測陣列

model.sortColumns = function (a, b) { 
    return a.Order > b.Order ? 1 : -1; 
}; 

model.sortedColumns = ko.dependentObservable(function() { 
    return this.reportFields.slice().sort(this.sortColumns); 
}, model); 

我使用一個foreach在屏幕上顯示他們和一切運作良好,我儘管現在需要做的是在提供改變命令的能力。我打算用點擊事件來放置簡單的向上/向下箭頭圖標,但我不知道如何去改變它,有沒有人做過這樣的事情?

回答

3

這裏是關於分類和排序了一大篇:http://www.knockmeout.net/2011/05/dragging-dropping-and-sorting-with.html

在這篇文章中所有的魔法是通過使用自定義綁定完成:

ko.bindingHandlers.sortableList = { 
     init: function(element, valueAccessor) { 
      var list = valueAccessor(); 
      $(element).sortable({ 
       update: function(event, ui) { 
        //retrieve our actual data item 
        var item = ui.item.tmplItem().data; 
        //figure out its new position 
        var position = ko.utils.arrayIndexOf(ui.item.parent().children(), ui.item[0]); 
        //remove the item and add it back in the right spot 
        if (position >= 0) { 
         list.remove(item); 
         list.splice(position, 0, item); 
        } 
       } 
      }); 
     } 
    }; 

<div data-bind="foreach: sortedColumns, sortableList: sortedColumns"></div> 
+0

這引起了種種災難,'$ .ui.isOverAxis的不是函數「 –