Ember DS.RecordArray фильтрует элементы

Я получаю все записи в моем вызове модели маршрута, но затем в одном из компонентов я хочу показать только подмножество записей. Я делаю это по телефону models.filter(somefilter), Проблема в том, что filter возвращает Array не DS.RecordArray и когда какое-либо действие вызывает удаление модели из магазина, Array не обновляется, и компонент с этой моделью не удаляется.

Кто-нибудь знает, как создать фильтр, который возвращает DS.RecordArray или преобразовать существующий массив в DS.RecordArray,

// маршруты / index.js
Route.extend ({
  модель () {
    вернуть this.store.findAll ('user');
  }
});

//index.hbs
{{пользователи некоторых компонентов = модель}}

//some-component.js
Component.extend ({
  FilterUsers: Ember.computed(function() {
    вернуть this.get('users').filter(...);
  })
});

//some-component.hbs
{{#each FilterUsers as | пользователь |
  {{user-component user=user}}
{{/}} Каждая

1 ответ

filteredUsers: Ember.computed(function() {
    return this.get('users').filter(...);
  })

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

filteredUsers: Ember.computed('users',function() {
        return this.get('users').filter(...);
      })
Другие вопросы по тегам