首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Knockout.js排序列表

Knockout.js排序列表
EN

Stack Overflow用户
提问于 2013-05-25 05:43:24
回答 2查看 7.6K关注 0票数 5

我有一个使用knockout.js作为选择列表的排序列表。我想把它转换成一个无序列表。使用knockout.js对列表进行排序的方法是什么?我认为错误出在: allItems().length >1

http://jsfiddle.net/infatti/Ky5DK/

代码语言:javascript
复制
var BetterListModel = function () {
    this.allItems = ko.observableArray([
        { name: 'Denise' },
        { name: 'Charles' },
        { name: 'Bert' }
    ]); // Initial items

    this.sortItems = function() {
        this.allItems.sort();
    };
};

ko.applyBindings(new BetterListModel());


<button data-bind="click: sortItems, enable: allItems().length > 1">Sort</button>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-25 05:55:03

代码语言:javascript
复制
this.allItems(this.allItems().sort(function(a, b) { return a.name > b.name;}));
票数 7
EN

Stack Overflow用户

发布于 2013-07-18 22:23:57

代码语言:javascript
复制
var BetterListModel = function () {
    this.allItems = ko.observableArray([
    { name: 'Denise' },
    { name: 'Charles' },
    { name: 'Bert' }
    ]); // Initial items

    this.sortItemsAscending = function() {
        this.allItems(this.allItems().sort(function(a, b) { return a.name > b.name;}));
    };

    this.sortItemsDescending = function() {
        this.allItems(this.allItems().sort(function(a, b) { return a.name < b.name;}));
    };
};

已解释的行: weWiliChangeTheArrayToValue(weWilSortTheArrayWithASpecialFunction(ComparatorFunction))

ComparatorFunction即。

代码语言:javascript
复制
function(a, b) { return a.name < b.name;} 

是一个特殊的函数,它帮助排序函数...好的,排序。

它接受2个参数并比较它们,如果第一个参数是“较大的”(应该在列表中更远),则返回true;如果第一个参数是“较小的”,则返回false。

每个(几乎)排序算法都是通过比较排序集合的2个元素,直到所有元素都是有序的。

更改顺序的方法是确保函数返回false,而它通常返回true -最简单的方法是将>操作更改为<

再编辑一件事:如果比较非ASCII字符,使用return a.localCompare(b);(和return b.localCompare(a);),在处理数字时使用"-“sing,所以这是一个算术运算

EDIT2

警告上面的方法">“可能会中断数组使用中的重复项

代码语言:javascript
复制
return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;

取而代之的是(或者只是localCompare)

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16744045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档