Javascript 如何在提要中按最近创建的用户列出帖子?
我使用Onymos作为后端。当我从onymos中提取数据时,它会给我一个“arrange by”属性,我可以在其中指定“createdTime”作为值,但是由于某种原因,它不会传递到我的模板中。我不认为在我的谷歌搜索中,有一个指令命令。因此,我不知道如何在我的模板中订购。 我的服务将数组传递给回调函数,回调函数在主TS页的contstructor中激发。 我悬赏是因为有人提供的第一个解决方案不适合我。。不断地造成错误 HOME.HTMLJavascript 如何在提要中按最近创建的用户列出帖子?,javascript,angular,ionic2,angularjs-orderby,Javascript,Angular,Ionic2,Angularjs Orderby,我使用Onymos作为后端。当我从onymos中提取数据时,它会给我一个“arrange by”属性,我可以在其中指定“createdTime”作为值,但是由于某种原因,它不会传递到我的模板中。我不认为在我的谷歌搜索中,有一个指令命令。因此,我不知道如何在我的模板中订购。 我的服务将数组传递给回调函数,回调函数在主TS页的contstructor中激发。 我悬赏是因为有人提供的第一个解决方案不适合我。。不断地造成错误 HOME.HTML <ion-card id="card" *ngFor
<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>
HOME.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
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
导出类主页{
listOfEvents:Array=[];
事件后:任何;
构造函数(公共navCtrl:NavController,
公共popoverCtrl:PopoverController,
公共getPostSrvc:getPostsService){
this.listOfEvents=[];
让那=这;
this.getPostSrvc.getPosts(
这是我选择的城市,
函数GetPostsAccess(listOfEventsObject){
for(listOfEventsObject中的变量i){
this.listOfEvents.push(listOfEventsObject[i]);
}
},
函数getPostsFailure(错误){
console.log('错误:home.ts:检索帖子失败-'+错误);
});
}//闭合构造函数
}//密级
只需在客户端对其进行排序:
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
});
}
- 您确实需要找出无法在服务器上排序的原因。对于应用程序的生产版本,在客户端排序可能会变得非常昂贵,特别是当您的事件列表只更新了一两个事件时,会降低应用程序的速度。
也许您可以为
使用更好的编码。是否尝试将此字段转换为时间戳值?例如,您可以使用库来执行此操作:createdTime
event.createdTime=moment().valueOf()
- 其他用户建议的客户端排序是在没有服务器排序的情况下的方法。但是,通过同时插入并保持数组的排序,您可以使其更为优化
push
:
sortedPush( array, value ) {
array.splice( _.sortedIndex( array, value ), 0, value );
}
这里找到的数组反向方法最适合我:
那么,在sort函数中,我会将每个项重新推送到一个数组中吗?我需要一个数组来传递给模板。我不确定a、b、参数有何帮助。请看JavaScript排序文档。@Spilot您是否尝试实现此注释?@duanx。。。是的,但它不起作用。什么都没有发生,本身没有错误,但是我的列表的顺序和往常一样,不是我想要的顺序。你需要提供一些输出、控制台日志等等。
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);
});