我有一个进度说明列表(简单对象的集合),在此屏幕截图中,前三个在模型中,最后一个使用push命令添加到模型中:
在HTML中,此表示定义如下:
<div ng-repeat="item in vm.data.ProgressNotes|orderBy:'-Date'">
按日期反向排序,最近排在最前面。
将新对象添加到集合中,如下所示:
data.ProgressNotes.push({
Note: progressNote,
UserName: ctx$.uName,
Date: new Date()
});
vm.data.ProgressNotes的示例模型片段:
问题:为什么新项目不显示在顶部,orderBy不适用于使用push添加的项目?
答案 0 :(得分:2)
note对象中的Date具有不同的数据类型。在模型中,它表示为字符串,但是当您将新笔记推送到数组时,新笔记的日期为日期类型Date: new Date()
。当角度按照不同的数据类型排序时,比较在相同类型的值内完成,然后按字母顺序比较类型。
我创建了一个plunker来演示这种行为。
答案 1 :(得分:0)
正如其他人所提到的,示例数据中Date
属性的类型是字符串。您必须修改示例数据以生成Date类型的Date
属性。
您可以这样做:
ProgressNotes.forEach(function(progress_note){
progress_note.Date = new Date(progress_note.Date);
});
所以现在示例数据也将具有Date类型的Date属性。