2012-09-25 58 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/