Обновить модель Ember при выполнении метода обслуживания

В маршруте, я хотел бы мою модель, где я звонил this.get('store')быть зависимым от услуги. Поэтому, когда одна из моих ценностей в сервисе изменится, моя модель будет автоматически обновлена.

Я не знаю, возможно ли это с помощью службы, и является ли это хорошей практикой.

услуги / текущие-contact.js

export default Service.extend({
  session: service('session'),
  store: service(),

  list() {
    if (this.get('session.isAuthenticated')) {
      return this.get('store').findAll('contrat').then((contrats) => {
        this.set('contrats', contrats);
      });
    } else {
      return RSVP.resolve();
    }
  },

  load() {
    if (this.get('session.isAuthenticated')) {
      if (localStorage.getItem('contrat')) {
        return this.get('store').find('contrat', JSON.parse(localStorage.getItem('contrat'))).then((contrat) => {
          this.set('contrat', contrat);
        });
      } else {
        return this.get('store').findAll('contrat').then((contrats) => {
          this.set('contrat', contrats.get('firstObject'));
          localStorage.setItem('contrat', JSON.stringify(contrats.get('firstObject').id));
        });
      }
    } else {
      return RSVP.resolve();
    }
  },

  select(id) {
    if (this.get('session.isAuthenticated')) {
      return this.get('store').findRecord('contrat', id).then((contrat) => {
        localStorage.setItem('contrat', JSON.stringify(contrat.id));
        window.location.reload(true);
      })
    } else {
        return RSVP.resolve();
      }
    }
});

мой маршрут

export default Route.extend(AuthenticatedRouteMixin, {
  session: service('session'),
  currentContract: service('current-contract'),

  model() {
    var self = this;
    return RSVP.hash({
      pdccontrats: this.get('store').findAll('pdccontrat').then(function(i) {
        return i.filterBy("contrat_fk.id", self.get('currentContract.contrat.id'));
      }),
      documentgroupefacturationclient: this.get('store').findAll('documentgroupefacturationclient'),
    })
  }
});

0 ответов

Другие вопросы по тегам