Обновить модель Ember - PullRequest
       13

Обновить модель Ember

0 голосов
/ 14 марта 2019

У меня есть простой маршрут вызова

model: function(params) {
  return this.store.find("booking", params.booking_id);
},

Когда посещается маршрут, можно вносить изменения, и я хочу, чтобы они были сброшены при следующем посещении страницы во время того же сеанса, если только они не были сохранены. Простая операция обновления данных, когда-то полученных с помощью { reload: true }, теперь, кажется, не имеет простой, простой альтернативы.

Как мне это сделать? Спасибо.

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

Ваш маршрут имеет динамический сегмент.Когда вы генерируете ссылку на этот маршрут, у вас есть возможность передать в модель либо контекст модели, либо идентификатор.

Если вы передадите контекст модели, ловушка model () не сработает, и ember будет использовать любое значение, которое он в данный момент хранит в хранилище.Если вы передадите model.id, то ловушка model () сработает и получит последние данные.

Проверьте генерацию ссылки на этот маршрут и посмотрите, передаете ли вы booking или booking.id на маршрут.

https://guides.emberjs.com/release/routing/specifying-a-routes-model/

0 голосов
/ 14 марта 2019

Для обновления модели Ember вы можете использовать this.refresh();.

Для отката всех атрибутов при выходе из маршрута вы можете использовать this.controller.get('model').rollbackAttributes();

предположим, что существует маршрут с именем post

В вашем routes/post.js

...
export default Route.extend({
  ...
  model: function() {
    ....
  },
  actions: {
    refreshModel: function() {
      this.refresh();
    },
    willTransition() {
      this.controller.get('model').rollbackAttributes();
    }
  }

вызов refreshModel действия от вашего controller как this.sendAction('refreshModel')

...