2013-06-29 4 views
2

Я пытаюсь выяснить, как наилучшим образом подойти к созданию метода для вытягивания определенных объектов на основе атрибута с использованием Ember.js.Ember.js - как фильтровать модель?

Сейчас моя модель выглядит следующим образом:

App.Resume = Ember.Object.extend()

App.Resume.reopenClass 
    store: {} 

    findAll: -> 
     arr = Ember.ArrayProxy.create() 

     if xhr 
      xhr.abort() 
      return 

     xhr = $.ajax(
      url: '../json/cv.json' 
      dataType: 'json' 
      timeout: 10000 
      ).done (response) => 
       response.users.forEach (user, i) => 
        cv = @findOne(user.personId) 
        cv.setProperties(user) 
        return 
       values = (values for keys, values of @store) 
       arr.set('content', values) 

     arr 

    findOne: (id) -> 
     cv = @store[id] 
     if not cv 
      cv = App.Resume.create 
       id: id 
      @store[id] = cv 
     cv 

Если вы посмотрите на петлю внутри сделано обратного вызова, вы увидите, что оно создает модель с использованием user.id - есть также поле user.specialization. Это поле, которое я хочу фильтровать.

Любые идеи/помощь были бы высоко оценены!

Спасибо!

Rich

ответ

4

Вы можете использовать filterProperty на любом Эмбер Enumerable как Array или ArrayProxy. Он соответствует наличию по умолчанию. Вы также можете передать аргумент для сопоставления с каждым свойством в массиве. Вы можете связать это с вычисленным свойством для привязки в своем представлении.

filtered: function() { 
    return this.get('products').filterProperty('outOfStock') 
}.property('products') 

См. Этот пример jsbin.