2015-04-09 3 views
0

У меня есть модель под названием variableDataPackages, структура которого состоит в следующем:Сортировка Ember данных

TM.VariableDataPackage = DS.Model.extend({ 
    name: DS.attr(), 
    number: DS.attr(), 
    variableData: DS.attr(), 
    vds:DS.attr(), 
    asset_id:DS.attr(), 
    vdp_id:DS.attr(), 
    type: DS.attr(), 
    description: DS.attr(), 
    vdpackage_id:function(){ 
     if((this.get("type.name") != "d")&&(this.get("type.name") != "u")){    
      return this.get("type.name") 
     } else { 
      return this.get("type.name") + this.get("number");     
     } 
    }.property("type","number") 
}) 

Значение отображения представляет собой вычисленное свойство и набор записей, содержащихся в хранилище для этой модели часто обновляется/удален/создано.

Я хочу, чтобы иметь возможность сортировать записи на основе vdpackage_id.

Есть ли способ сделать это?

+0

Не могли бы вы дать небольшой контекст, в котором вы хотите использовать отсортированные данные? Ответ мой зависит от этого. – jnfingerle

+0

Я хочу отобразить данные по отсортированному заказу. Его в основном список записей, и я просто хочу отобразить его на странице. – pseudoanime

ответ

1

Вы можете использовать Ember.SortableMixin на контроллере (примеры можно найти в guides). Это позволит вам сортировать для разных ключей и делать это зависимым от ввода пользователем.

В любом месте вашего кода вы можете создать Ember.ArrayProxy. Пример для крючка модели (непроверенный, просто для того, чтобы показать идею):

model: function() { 
    return Ember.ArrayProxy.extend({ 
      arrangedContent: Ember.computed.sort('content', 'props'), 
      props: ['bar:asc'] 
     }).create({ 
      content: this.store.all('foo')}); 
    }); 
} 
+0

Извините, для большей ясности эта модель имеет много отношения к модели активов. В этом активе есть много вариантов пакетов. И я хочу иметь возможность сортировать записи variabledatapackage на основе vdpackage_id (пока я на странице активов). Это возможно? – pseudoanime

+0

Если это означает, что вы хотите показать переменные variableDataPackages. маршрут «актив/показ», при этом актив является моделью, тогда вы должны добавить вычисляемое свойство, основанное на 'model.variableDataPackages. @ each', на контроллер' asset/show'. В этом случае может быть достаточно «return model.variableDataPackages.sortBy (« ключ »). Но это еще много догадок с моей стороны. Возможно, вы захотите предоставить больше кода. Кроме того, может оказаться полезным работающий http://emberjs.jsbin.com. – jnfingerle

+0

BTW, если у Asset есть HasMany для этой модели, тогда эта модель должна иметь отношение BelongsTo к Asset вместо asset_id. – jnfingerle

Смежные вопросы