如何在ember中启用ds-rollback-attribute?

时间:2019-10-10 13:03:14

标签: ember.js ember-model

Ember具有方法rollbackAttribute(),与默认方法rollbackAttributes()非常相似。区别在于rollbackAttribute()仅可用于回滚特定的模型属性。 默认情况下,此方法不可用,要使用它,您需要启用ds-rollback-attribute并按以下说明运行canary构建:https://docs.w3cub.com/ember/classes/ds.model/methods/#rollbackAttribute

我在哪里可以启用ds-rollback-attribute,如何运行canary build

2 个答案:

答案 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);
  },
});