如何覆盖 Ember 数据中的 peek 方法?
How to override peek method in Ember data?
我的应用程序在 users.js 模型中有用户(包括活动用户和已删除用户)。
但早些时候它只有活跃用户。所以,如果我将删除添加到同一模型,那么它会影响我不需要删除用户的其他地方,这导致我在很多地方进行更改。
所以,我想覆盖 ember-data 中的 peekAll 以从用户模型中获取所需数据。
像这样:
App.ApplicationAdapter = DS.RESTAdapter.extend({
peek: () {
//...
}
});
但是ember-data docs中没有这样的东西。
有什么方法可以覆盖 peekAll 方法吗?
不要覆盖 peekAll 方法。我建议使用 filterBy
使用 isDeleted
标志。
let users = this.get('store').peekAll('user');
activeUsers = users.filterBy('isDeleted',false);
http://emberjs.com/api/data/classes/DS.Model.html#property_isDeleted
编辑:您可以将服务器返回的 isDeleted
键映射到模型中的其他名称。
为此,您需要通过 运行 ember g serializer user
为 user
模型创建序列化程序
app/models/user.js
import DS from 'ember-data';
export default DS.Model.extend({
isDeletedFlag: DS.attr('string')
});
app/serializers/user.js
import DS from 'ember-data';
export default DS.JSONAPISerializer.extend({
attrs: {
isDeletedFlag: 'isDeleted'
}
});
https://guides.emberjs.com/v2.11.0/models/customizing-serializers/#toc_attribute-names
编辑:这个小游戏只适合你。我不会向其他人推荐这个,因为这可能会在未来的升级中产生问题。
Ember-Twiddle 覆盖 peekAll 方法并执行您需要的操作
我推荐 kumkanillam 所说的。但是要回答你的问题,你可以通过为你的用户模型创建一个适配器来覆盖 peekAll 方法
adapters/users.js
App.ApplicationAdapter = DS.RESTAdapter.extend({
peekAll: () {
//...
}
});
我的应用程序在 users.js 模型中有用户(包括活动用户和已删除用户)。
但早些时候它只有活跃用户。所以,如果我将删除添加到同一模型,那么它会影响我不需要删除用户的其他地方,这导致我在很多地方进行更改。
所以,我想覆盖 ember-data 中的 peekAll 以从用户模型中获取所需数据。
像这样:
App.ApplicationAdapter = DS.RESTAdapter.extend({
peek: () {
//...
}
});
但是ember-data docs中没有这样的东西。
有什么方法可以覆盖 peekAll 方法吗?
不要覆盖 peekAll 方法。我建议使用 filterBy
使用 isDeleted
标志。
let users = this.get('store').peekAll('user');
activeUsers = users.filterBy('isDeleted',false);
http://emberjs.com/api/data/classes/DS.Model.html#property_isDeleted
编辑:您可以将服务器返回的 isDeleted
键映射到模型中的其他名称。
为此,您需要通过 运行 ember g serializer user
user
模型创建序列化程序
app/models/user.js
import DS from 'ember-data';
export default DS.Model.extend({
isDeletedFlag: DS.attr('string')
});
app/serializers/user.js
import DS from 'ember-data';
export default DS.JSONAPISerializer.extend({
attrs: {
isDeletedFlag: 'isDeleted'
}
});
https://guides.emberjs.com/v2.11.0/models/customizing-serializers/#toc_attribute-names
编辑:这个小游戏只适合你。我不会向其他人推荐这个,因为这可能会在未来的升级中产生问题。 Ember-Twiddle 覆盖 peekAll 方法并执行您需要的操作
我推荐 kumkanillam 所说的。但是要回答你的问题,你可以通过为你的用户模型创建一个适配器来覆盖 peekAll 方法
adapters/users.js
App.ApplicationAdapter = DS.RESTAdapter.extend({
peekAll: () {
//...
}
});