如何按最近创建的提要中的帖子列出帖子



我将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 );
  }

相关内容

  • 没有找到相关文章