我希望将当前用户注入我的topic
模型并进行一些检查。
示例:
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 :(得分:0)
您可以执行此操作,但我强烈建议您使用currentUser.data.id
和userId
作为计算属性的依赖项!
答案 1 :(得分:0)
你绝对可以这样做,但是根据你在currentUser.data中的含义,它可能不是最佳的,或者不会产生预期的结果。如果currentUser.data是ProxyObject(DS.PromiseObject)或承诺它可能导致计算属性被计数多次,那么你打算这样做。
而且object.get('x.y.z')会产生意想不到的结果,特别是如果x或y是promise,请注意get中的链接属性
如果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
)
})
})