使用Ember.Object的get()检索值,使用set()方法更新值。
hasPermission.get('someProperty');
hasPermission.set('someProperty', 'New value of someProperty');
someProperty 可以在模型上定义:
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
export default Model.extend({
someProperty: attr('string');
});
使用这些方法还可以确保重新计算计算属性(默认情况下,如果在此期间相关值发生了变化)。我强烈建议阅读 Ember 指南的这一部分:The Object model。
顺便说一句,就个人而言,当我从 JSHint 切换到 ESLint 并应用 eslint-plugin-ember 时,我使用来自 Ember namespace 的 get() 和 set() 方法。
在这种情况下,不要写hasPermission.get('data'),而是写Ember.get(hasPermission, 'data');。在代码可读性方面更进一步,您可以这样做:
// your-app/services/your-service.js
// ... imports
const {
get,
inject,
Service,
} = Ember;
export default Service.extend({
store: inject.service(),
someFunction(){
const hasPermission = this.get('store').peekRecord('system/permission','PlatformRead');
console.log(get(hasPermission, 'someProperty'));
},
});
下面的 Stackoverflow thread 稍微触及了this.get() 和Ember.get() 之间的区别。