2017-06-05 7 views
4

私はバックエンドにOnymosを使用します。私は擬人から私のデータを引っ張るとき、私は値として "createdTime"を指定することができますが、これは私のテンプレートに何らかの理由で持ち越されません "アレンジ"プロパティを提供します。私は、私のグーグル・グーグルから、もはや角張った命令による命令はないと思う。だから私はテンプレートでこれをどのように注文できるかわからない。 私のサービスは、メイン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 

答えて

0

アレイリバース方法私にとって最高の働いた: 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); 
      }); 
3

ただ、それをクライアント側を並べ替える:

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

} 
+0

ので、ソート関数の内部で、私は配列に各項目を再度押すでしょうか?私はテンプレートに渡すために配列が必要です。私は、a、b、引数がどのように役立つか分かりません。 – Spilot

+2

JavaScriptソートのドキュメントを見てください。 – theblindprophet

+0

私はまだ答えを探しているので賞金を始めました... – Spilot

-1
  • をあなたは本当にあなたがサーバー上でソートすることはできません理由を見つける必要があります。プロダクション版のアプリでは、クライアントの並べ替えが非常に高価になり、イベントのリストが1つまたは2つのイベントだけで更新される場合は、アプリのパフォーマンスが低下する可能性があります。 おそらくcreatedTimeの方がより良いコーディングを使用できます。このフィールドをタイムスタンプ値に変換しようとしましたか?あなたはmoment.jsライブラリを使用することによって、たとえば、これを行うことができます

    event.createdTime = moment().valueOf()

  • 他のユーザーによって提案ソート、クライアント側がサーバーの並べ替えが存在しない状態で移動するための方法です。ただし、配列の挿入と保存を同時に行うことで、より最適な状態にすることができます。

あなたがプッシュするところのインデックスを見つけ、代わりに通常のpush次の機能を使用するunderscoreライブラリを使用する(またはそれを自分で書く)ことができます:ここで見つける

sortedPush(array, value) { 
     array.splice(_.sortedIndex(array, value), 0, value); 
    } 
関連する問題