在服务 Ember js 中访问存储数据
Accessing Store data in service Ember js
我试图通过在我的服务中注入商店来从服务中查看商店。 peekRecord
函数returns一个Class。访问商店 returns 的记录的最佳方式是什么?
由于 peekRecord 是同步的,我试过:
const hasPermission = this.get('store').peekRecord('system/permission','PlatformRead');
console.log(hasPermission.data);
是否有任何Ember特定方法来访问从商店返回的记录?
使用 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, I use get()
and set()
methods from Ember namespace 时。
在这种情况下,您应该写 Ember.get(hasPermission, 'data');
而不是 hasPermission.get('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'));
},
});
下面的 Whosebug 稍微触及了 this.get()
和 Ember.get()
之间的区别。
我试图通过在我的服务中注入商店来从服务中查看商店。 peekRecord
函数returns一个Class。访问商店 returns 的记录的最佳方式是什么?
由于 peekRecord 是同步的,我试过:
const hasPermission = this.get('store').peekRecord('system/permission','PlatformRead');
console.log(hasPermission.data);
是否有任何Ember特定方法来访问从商店返回的记录?
使用 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, I use get()
and set()
methods from Ember namespace 时。
在这种情况下,您应该写 Ember.get(hasPermission, 'data');
而不是 hasPermission.get('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'));
},
});
下面的 Whosebug this.get()
和 Ember.get()
之间的区别。