2

ember-data でストア全体をリロードする方法はありますか? または、中のアイテムを並べ替えるには?

次のようになります。

  • ユーザーが「追加」ボタンをクリックする
  • 新しいレコードが追加されました
  • ストアはコミットされています
  • ユーザーはアイテムがリストされている状態に送信されます
  • 彼の新しいエントリは正しい順序でそこにあります

これを行うには、送信してはならない model.didCreate を送信するか (モデルの役割ではありません!)、送信後にストアを更新する必要があります。

誰かが同様の問題を抱えていましたか?

ember-data リビジョン 12 を使用しています

編集

私が使用した:

Ember.run.later(this, function(){
    this.transitionToRoute('list');         
}, 500);

店に時間を与えるために。ただし、新しいエントリは常にリストの一番下にあります。ストア全体をリロードするか、何らかの方法で並べ替える必要があります。

編集#2

そこで、ここで少し手を加えました。私のテンプレートでは、次を使用します。

{{#each arrangedContent}}

ソートされたデータを使用するには、ルートで次のようにします。

App.AdsRoute = Ember.Route.extend({
    model: function(){
        return App.Ad.find();
    },
    sortProperties: ['id']
});

しかし、それは機能していません。Route は ArrayController ではないようです。そして、それから追加のAdsController拡張を行うArrayControllerと、どちらも機能しません。

4

1 に答える 1

1

Ember ArrayControllers には、コンテンツをソートするためのいくつかのオプションがあります。

http://emberjs.com/api/classes/Ember.ArrayController.html#property_sortAscending

並べ替えるフィールドと使用する順序を設定できます。これらを使用する場合、ビューを単純な古いコンテンツだけでなく、arrangedContent にバインドする必要があります。

私のアプリケーションでは、通常、レコードが永続化された後にリストの状態に戻ります。

var observer,   _this = this;

observer = function(target, path) {   
  if (target.get(path) === 'saved') {
    target.removeObserver(path, null, observer);
    return _this.get('target.router').transitionTo('apps.index');   
  } 
};

ストアにリロード メカニズムがあるかどうかはわかりませんが (個々のレコードにはあります)、答えが見つかったらこの応答を更新できます。

于 2013-03-22T21:50:43.520 に答える