排序格式'dd / mmm / yyyy'的日期数组

时间:2016-04-07 06:01:24

标签: knockout.js

var data=ko.observableArray[(
{mydate:'01 Jan 1997'},
{mydate:'01 Aug 1977'},
)];

我想在点击按钮时按升序和降序对上面的数据进行排序。 Plz帮助我。

提前致谢。

1 个答案:

答案 0 :(得分:0)

有很多方法可以对observableArray进行排序,

选项1 只需使用字符串排序,

ViewModel

$(function () {
function VM() {
var self = this;
self.data = ko.observableArray([
    {mydate: '01 Jan 1997'},
    {mydate: '01 Aug 1977'},
]);
self.stringSort = function (a, b) {
    return a.mydate.toLowerCase() > b.mydate.toLowerCase() ? 1 : -1;
};
self.stringSortInstances = ko.dependentObservable(function () {
    return self.data.slice().sort(self.stringSort);
}, self);

}
ko.applyBindings(new VM());
});

<强> HTML

<ul data-bind="foreach:stringSortInstances ">
     <li data-bind="text:$data.mydate"></li>
 </ul>

选项 - 2 在这里,您需要更改observableArray值格式,然后将字符串转换为日期和排序。它将根据日期排序。

查看模型

$(function () {
function VM() {
self.dataInUniDateFormate = ko.observableArray([
    {mydate: '1997/01/01'},
    {mydate: '1977/08/01'},
]);
self.dateSort = function (a, b) {
    return new Date(a.mydate) > new Date(b.mydate) ? 1 : -1;
};
self.DateSortInstances = ko.dependentObservable(function () {
    return self.dataInUniDateFormate.slice().sort(self.dateSort);
}, self);
}
ko.applyBindings(new VM());
});

<强> HTML

 <p>Date Sort</p>
        <ul data-bind="foreach:DateSortInstances">
            <li data-bind="text:$data.mydate"></li>
        </ul>

选项3 您可以使用一些外部插件将字符串转换为日期然后排序。您可以使用dateformatermomentjs或任何其他日期转换插件

谢谢,如果有帮助,请告诉我。