2012-09-25 53 views

回答

0

我會嘗試在加載數據和映射到視圖模型結構時對它們進行排序。

self.contacts = ko.observableArray(ko.utils.arrayMap(contacts, function(contact) { 
    contact.phones.sort(function(a, b) { 
     return a.type > b.type ? 1 : -1; 
    }); 

    return { 
     firstName: contact.firstName, 
     lastName: contact.lastName, 
     phones: ko.observableArray(contact.phones) 
    }; 
})); 

樣品:http://jsfiddle.net/rniemeyer/gZC5k/531/

+0

非常感謝,非常感謝。另外我怎麼能說在搜索中的字符串?即a.type =「家」。基本上設置排序爲我定義的任何自定義,而不是按字母順序排列 –

+0

您可以創建一個小圖來指示每種類型的優先級,然後排序函數將減去兩個優先級,例如:http://jsfiddle.net/rniemeyer/ gZC5k/536 / –

0

在RP的回答擴展:

您可以將一個事件處理程序type輸入

例如,你可以爲每個聯繫人這裏的手機進行排序每當type更改時移動phone對象。我使用了線性搜索,但可以隨意實現二分查找。

修改提琴:http://jsfiddle.net/zGKM2/