2016-06-28 5 views
0

それぞれDS.Modelにプライベート変数を保存します。その目的は保留中のコールバックを保存することです(キャンセルしたい場合に備えて)。Ember-data DS.Modelのプライベート変数

私はこれを試してみました(とそれが動作します):

DS.Model.reopen({ 
    init() { 
    let _pending; // my private var 

    this._getPending =() => _pending;     // get private var 
    this._setPending = callback => _pending = callback; // set private var 

    this._super(...arguments); 
    } 
}); 

私はinitializerでこれを置いている、と私はそれが期待通りに動作します。

私の質問は次のとおりです。これは良い方法ですか?それは何かを台無しにする可能性がありますか? ...そして、より良い方法がありますか?

個人的には、私はそれがうまくいく方法に満足しています。しかし、私は "Ember"の方法ではわかりません。これはEmber-cliアドオンに入る予定ですので、可能な限りベストプラクティスにしたいと思います。 (_getPending/_setPendingメソッドは、アドオン内でのみ使用されます)

答えて

1

これは私の2セントです。いい練習ではないとは言いませんが、Ember Objectsだけなので大丈夫です。ここでの質問は、Emberデータモデルは何のために使用されていますか? docからそれは言う:

"モデルはあなたのアプリケーションがユーザーに提示する基礎となるデータを表すオブジェクトです。"

これは定義されているものではありません。そのように使用する必要があるというわけではありません。

保留中のコールバックですので、キャンセルできますか? EmberモデルAPIは、この目的に使用できる状態オブジェクトを定義しています。 http://emberjs.com/api/data/classes/DS.Model.html isDeleted、isValid、isNewなどのフラグはすべての可能な状態を示します。

統合テストで簡単にテストできるルータアクションに配置します。

https://www.emberscreencasts.com/posts/102-ember-data-20-model-states-and-flags

はそれが役に立てば幸い:

は、あなたはそれらを説明し、このスクリーンキャストを確認することができます。

関連する問題