10

私はEmber.jsを試しており、ユーザーがログインおよびログアウトできる小さなアプリをセットアップしました。ユーザーがログアウトしたら、データストアに現在キャッシュされているすべてのレコードをクリアしたいと思います。これを行う方法はありますか、それともブラウザにページをリロードさせる必要がありますか?

4

7 に答える 7

18

この質問は2013年のものです。しかし、Ember Data 1.0.0-beta.17(2015年5月10日)以降、データストアをクリアする簡単な方法があります。

store.unloadAll()

(詳細はこちら:http ://emberigniter.com/clear-ember-data-store/ )

于 2015-07-16T15:11:36.370 に答える
6

今日の時点では、ストアのクリーンアップを完全に強制する一般的な方法はまだないようです。person最も単純な回避策は、すべてのタイプ( 、...)をループして、次のことを行うようです。

store.unloadAll('person');

ここに見られるように

于 2014-06-25T14:51:17.433 に答える
4

データストアのクリアは、Ember-Dataではまだサポートされていません。Githubトラッカーには、これに関する未解決の問題があります。

于 2013-02-17T18:20:14.643 に答える
1

よりクリーンで一般的なアプローチ。ストアを拡張または再開して、このような明確なメソッドを追加するだけです。

DS.Store.extend({
   clear: function() {
    for(var key in this.typeMaps)
    {
      this.unloadAll(this.typeMaps[key].type);
    }
  }
});

于 2014-10-16T16:50:25.623 に答える
0

がある:

App.reset();

しかし、それはデータストアをクリアするだけではなくstore.pushPayload、呼び出しによって破棄されたとマークされたオブジェクトにデータをプッシュしようとするエラーが発生することがありますApp.reset();

私たちが使用してきた:

store.init();

これは、新しい空のストアを作成してうまく機能しますが、残念ながらプライベートメソッドです。

于 2014-11-15T07:17:10.507 に答える
0

これは、で実行できるようになりましたstore.destroy()。すべてのレコードをアンロードしますが、新しいレコードのリロードにすぐに使用することもできます。これを確認しました1.0.0-beta.15。ドキュメントには記載されていないようですが、私にとってはうまくいっています。

別の方法は、ストアを繰り返してtypeMaps実行するstore.unloadAll(typeMap.typeName)ことですが、それが完全に必要かどうかはわかりません。

于 2015-03-18T06:13:17.200 に答える
-1

モデル内のレコードごとにレコードを削除します。このjsBindeleteOrgsの:

deleteOrgs: function(){
  var len;
  while(len = this.get('model.length')) {
    // must delete the last object first because 
    // this.get('model.length') is a live array
    this.get('model').objectAt(len-1).deleteRecord();
  }
  this.get('store').commit();
}

(2013年8月現在、削除されたデータの残留に問題があります。)

于 2013-08-09T03:16:42.177 に答える