ember.js 如何在成员中启用ds-rollback-attribute?

pcrecxhr  于 2022-11-05  发布在  其他
关注(0)|答案(2)|浏览(107)

Ember的方法rollbackAttribute()与默认方法rollbackAttributes()非常相似。不同之处在于rollbackAttribute()只能用于回滚特定的模型属性。默认情况下,此方法不可用,要使用它,您需要启用ds-rollback-attribute并运行如下所示的canary build:https://docs.w3cub.com/ember/classes/ds.model/methods/#rollbackAttribute
我可以在哪里启用ds-rollback-attribute,如何运行canary build

qfe3c7zg

qfe3c7zg1#

我担心你正在寻找非官方和过时的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

ars1skjm

ars1skjm2#

实际上,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);
  },
});

相关问题