使用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,我使用从灰烬namespaceget()
和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'));
},
});
以下#1 thread触摸略有this.get()
和Ember.get()
之间的差异。