Как включить ds-rollback-attribute в ember? - PullRequest
0 голосов
/ 10 октября 2019

Ember имеет метод rollbackAttribute(), который очень похож на метод по умолчанию rollbackAttributes(). Разница в rollbackAttribute() может использоваться для отката ТОЛЬКО конкретного атрибута модели. По умолчанию этот метод недоступен, и для его использования необходимо включить ds-rollback-attribute и запустить сборку канареек, как написано здесь: https://docs.w3cub.com/ember/classes/ds.model/methods/#rollbackAttribute

Где я могу включить ds-rollback-attribute и как я могу запуститьcanary build

Ответы [ 2 ]

0 голосов
/ 21 октября 2019

На самом деле реализация 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);
  },
});
0 голосов
/ 10 октября 2019

Боюсь, вы просматриваете неофициальные и устаревшие документы по API. Документы API для Ember Data размещены здесь: https://api.emberjs.com/ember-data/release

Метод rollbackAttribute() больше не документирован для последней версии, которая на момент написания этой статьи составляла 3.13. Это был последний документально подтвержденный для 3.1. Я думаю, что он был удален как флаг устаревшей функции в этом PR: [FEAT] удалить все флаги устаревшей функции # 5384

...