Emberjs: как фильтровать пользователей по любому свойству с помощью маршрутов

У меня следующий маршрут и настройка модели. Все мои пользователи отлично отображаются с использованием шаблона и отображают firstName и адрес электронной почты, как и ожидалось. Однако я не могу фильтровать по firstName или электронной почте при маршрутизации, подобной тому, как работает: user_id. (Сейчас я использую переходник для приспособлений)

Пример: # / users / logan

 this.resource('users', function(){
     this.resource('user', {path: ':user_firstName'}); //#/users/logan
 });

Следующая модель

App.User = DS.Model.extend({
    firstName: DS.attr('string'),
    email: DS.attr('string')
})

Итак, чтобы подвести итог, что именно должно происходить внутри модельной функции или какой другой подход я могу использовать?

App.UsersRoute = Em.Route.extend({
    model: function(){
        var user = App.User.find();;

       //FILTER BY firstName how?

        return user;
    }
});

person KALBB    schedule 08.03.2013    source источник


Ответы (1)


Вы можете создать событие на маршруте, которое изменяет содержимое контроллера, чтобы оно было фильтром модели.

Шаблон:

<span {{action filterByName}}>Filter by name</span>

Маршрутизатор:

App.UsersRoute = Ember.Route.extend({
  events: {
    filterByName: function() {
      this.get('controller').set('content', this.get('currentModel').filterProperty('firstName', 'John'));
    }
  }
});
person Andre Malan    schedule 08.03.2013
comment
Спасибо! Расширяя вышесказанное, после прочтения API, у меня теперь есть следующая работа. 'user = App.User.find ()' 'user = this.controllerFor (' users '). set (' content ', user.filterProperty (' firstName ', params.firstName));' - person KALBB; 09.03.2013