2015-01-26 2 views
0

This SO question объясняет, как хранить массив в модели Ember, но как это сделать с пользовательским объектом, который также не поддерживается изначально supported, according to the Guides.Как представить сложные объекты в моделях Ember?

Это пример объекта, который я строю

obj[0] = {"timeInMinutes": ">120", "occurrences": 24 }; 
obj[1] = {"timeInMinutes": "90-120","occurrences": 69 }; 
obj[2] = {"timeInMinutes": "60-90", "occurrences": 53 }; 
obj[3] = {"timeInMinutes": "30-60", "occurrences": 35 }; 
obj[4] = {"timeInMinutes": "0-30", "occurrences": 24 }; 

Update.

Используя информацию, представленную в this answer, мне удалось создать атрибут массива на моей модели вместе с несколькими другими значениями, но я также хочу иметь возможность создать атрибут DS.attr('object'), который будет использоваться следующим образом. Чтобы создать тип объекта, мне нужно использовать DS.Transform.extend({, как это было сделано с массивом в связанном с SO ответом?

App.Index = DS.Model.extend({ 
    names: DS.attr('array'), 
    country: DS.attr('string'), 
    statistics: DS.attr('object') 
+0

Вы связались с руководством по модели Ember Data. Используете ли вы данные Ember? –

+0

Да, я использую EmberData, так как это зависит от адаптера localstorage. – Leahcim

ответ

0

Если вы хотите, свойство быть примитивный объект, а не объект Ember, то вы можете сделать следующее:

ObjectTransform = DS.Transform.extend({ 
    deserialize: function(serialized) { return serialized; }, 
    serialize: function(deserialized) { return deserialized; } 
}); 

Это при условии, что вам не нужно, чтобы изменить объект на всех после него приходит через провод.

+0

, так как я могу использовать его при настройке моей модели? как это? '' 'App.myModel = Ember.Model.extend ({ имя: DS.attr ('string'), someObject: DS.attr ('object') }' '' – Leahcim

+0

@Leahcim, точно вправо. –

+0

У меня такая же настройка, но я использовал имена RawTransform и DS.attr ('raw') '. Я предполагаю, что использование слова' object' тоже будет работать. не требует сериализации, и десериализация может быть использована таким образом, включая массивы примитивов или массивов объектов. –

0

Если вы используете данные Ember Data, вам придется структурировать свои модели в соответствии с Ember Data. У вас может быть родитель Object (наверняка имеет лучшее имя, но вы вообще не объяснили свой домен), что hasManyTimespanOccurrence s или тому подобное.

+0

Прошу прощения, мне это непонятно. Возможно, я не предоставил достаточно информации. Я обновил OP в надежды на то, что вы могли бы предоставить немного более подробную информацию. Заранее спасибо – Leahcim

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