Ember具有方法rollbackAttribute()
,与默认方法rollbackAttributes()
非常相似。区别在于rollbackAttribute()
仅可用于回滚特定的模型属性。
默认情况下,此方法不可用,要使用它,您需要启用ds-rollback-attribute
并按以下说明运行canary构建:https://docs.w3cub.com/ember/classes/ds.model/methods/#rollbackAttribute
我在哪里可以启用ds-rollback-attribute
,如何运行canary build
?
答案 0 :(得分:0)
我担心您正在查看的是非官方且过时的API文档。 Ember Data的API文档位于以下位置:https://api.emberjs.com/ember-data/release
对于最新版本,rollbackAttribute()
方法已不再记录,在撰写本文时为3.13
。是last documented for 3.1
。我认为它已在此PR中作为过时的功能标志删除:[FEAT] remove all stale feature flags #5384
答案 1 :(得分:0)
实际上,rollbackAttribute()
的实现非常简单。
我们可以创建自己的方法并将其提取到service
中。
app/services/rollback-attribute.js
import Ember from 'ember';
export default Ember.Service.extend({
rollback(model, attribute) {
const changedAttributes = model.changedAttributes();
if (changedAttributes[attribute]) {
model.set(attribute, changedAttributes[attribute][0]);
}
}
});
创建此服务后,您可以在route.js
import Ember from 'ember';
import service from 'ember-service/inject';
export default Ember.Route.extend({
rollbackAttribute: service('rollback-attribute'),
_rollbackAttribute(model, attribute) {
this.get('rollbackAttribute').rollback(model, key);
},
});