2016-04-15 17 views
0

私のtopicモデルに現在のユーザーを注入して、いくつか点検します。emberモデルに追加データを入力してください

例:

export default DS.Model.extend({ 
    currentUser: Ember.inject.service('session-account'), 
    text: DS.belongsTo('string'), 
    userId: DS.attr('number'), 
    isMine: function(){ 
     return this.get('currentUser.data.id') == this.get('userId') 
    }.property() 
} 

質問: が、それはこのロジックを実行することが好ましいアプローチはありますか?また、私はこのアプローチのパフォーマンスについて興味深いです、各行にサービスを注入すると性能が低下する可能性がありますか?

+0

私はそれが好きです!私は通常、(すべての)コントローラ/ルートでそれをしました。残念ながら私は答えを教えることはできませんが、私は投稿しておきたいと思います... – Jeff

答えて

0

これは間違いなく可能ですが、currentUser.dataの内容によっては最適ではないか、期待した結果が得られない可能性があります。 currentUser.dataがProxyObject(DS.PromiseObject)または約束の場合、計算されたプロパティがカウントされる回数を増やすことができます。
(「XYZ」)またobject.getは意図しない結果を生むxまたはyが約束されている場合は特に、currentUser.dataあなたは、計算を実行するのに優れているDS.PromiseObjectであれば取得

に連鎖する性質を持つように注意してくださいすることができますこのようなプロパティ:

export default DS.Model.extend({ 
    currentUser: Ember.inject.service('session-account'), 
    text: DS.belongsTo('string'), 
    userId: DS.attr('number'), 
    isMine: Ember.computed('currentUser.data.id', 'userId', function() { 
     model = this; 
     promise = new Ember.RSVP.Promise(function(resolve, reject){ 
      model.get('currentUser.data').then(function(currentUserData){ 
       resolve(currentUserData.get('id') === model.get('userId')) 
      }).catch(function(reason){ 
       reject(reason) 
      }) 
     }) 

     return DS.PromiseObject.create(
      promise: promise 
     ) 
    }) 
}) 
0

これは可能ですが、currentUser.data.iduserIdを計算プロパティの依存として使用することを強くお勧めします。

関連する問題