我将onymos用于后端。当我从onymos中获取数据时,它会给我一个"按我可以将" create -time"指定为值的属性安排,但是,由于某种原因,这不会延续到我的模板上。我认为我不再从Angular中订购指令的订单。因此,我不确定我还能在模板中订购它。我的服务将数组传递给回调函数,该回调功能在主TS页面的续点器中发射。我对此提出了赏金,因为有人提供的第一个解决方案对我不起作用。
home.html
<ion-card id="card" *ngFor="let event of listOfEvents" >
<ion-row id="row1">
<ion-col>
<span class="showDetails">Date:</span>
{{getFormattedTime(event.eventTime, 'MM-dd-yyyy')}}
</ion-col>
<ion-col>
<span class="showDetails">Time:</span>
{{getFormattedTime(event.eventTime, 'HH:MM')}}
</ion-col>
<ion-col>
<span class="showDetails">Venue:</span>
{{event.venue}}
</ion-col>
</ion-row>
</ion-card>
myService.ts
getPosts (selectedCity, successCallback, failureCallback) {
OnymosUtil.getData(
'/events/' + selectedCity,
function getPostsSuccess (listOfEventsObject){
successCallback(listOfEventsObject);
},//close function getPostSuccess
function getPostsFailure (error) {
failureCallback(error);
},
{
orderByField: 'createdTime', //OrderByField not working
limitToFirst: 100
});
}//end getPosts
home.ts
export class Home {
listOfEvents: Array<any> = [];
postEvent: any;
constructor (public navCtrl: NavController,
public popoverCtrl: PopoverController,
public getPostSrvc: getPostsService) {
this.listOfEvents = [];
let that = this;
this.getPostSrvc.getPosts(
this.selectedCity,
function getPostsSuccess (listOfEventsObject) {
for (var i in listOfEventsObject) {
that.listOfEvents.push(listOfEventsObject[i]);
}
},
function getPostsFailure (error) {
console.log('ERROR : home.ts : Failed retrieving Posts - ' + error);
});
}//close constructor
}//close class
只是对客户端进行排序:
function successCallback (listOfEventsObject) {
for (var x in listOfEventsObject) {
that.listOfEvents.push(listOfEventsObject[x]);
}
// sort
that.listOfEvents = that.listOfEvents.sort(function(a, b) {
return a.createdTime - b.createdTime;
// or vice versa
// or any other way you wish to sort
});
}
阵列反向方法在这里发现最适合我:https://www.w3schools.com/jsref/jsref_reverse.asp
this.getPostSrvc.getPosts(
this.selectedCity,
function getPostsSuccess (listOfEventsObject) {
for (var i in listOfEventsObject) {
that.listOfEvents.push(listOfEventsObject[i]);
}
**that.listOfEvents.reverse();**
},
function getPostsFailure (error) {
console.log('ERROR : home.ts : Failed retrieving Posts - ' + error);
});
-
您确实需要找出为什么无法在服务器上排序的原因。对于该应用程序的生产版本,如果您的事件列表仅通过一两个事件更新,则对客户端进行排序可能会变得非常昂贵,并且会降低您的应用程序。也许您可以为
进行此操作。createdTime
使用更好的编码。您是否尝试过将此字段转换为时间戳值?您可以使用moment.js
库:event.createdTime = moment().valueOf()
-
其他用户建议的客户端排序是在没有服务器排序的情况下进行的。但是,您可以通过插入和保持数组同时分类来使其更加最佳。
您可以使用下划线库(或自己编写(来查找何处的索引,并使用以下功能而不是普通push
:
sortedPush( array, value ) {
array.splice( _.sortedIndex( array, value ), 0, value );
}