Просматривая документацию Ember.js, я не могу понять, как создавать вложенные модели. Предположим, что у меня есть следующий JSON:
App.jsonObject = {
id: 1812,
name: 'Brokerage Account',
positions: [
{
symbol: 'AAPL',
quantity: '300'
},
{
symbol: 'GOOG',
quantity: '500'
}
]
}
Если я создаю объект модели, подобный этому
App.account = Ember.Object.create(App.jsonObject);
только свойства верхнего уровня (id и name) привязаны к шаблонам, массив вложенных позиций не привязывается правильно. В результате добавление, удаление или обновление позиций не влияет на отображение. Есть ли ручной или автоматический способ преобразования массива позиций так, чтобы он был осведомлен о связности (аналогично ObservableCollection в WPF)?
Я создал jsfiddle, чтобы поэкспериментировать с этим: http://jsfiddle.net/nareshbhatia/357sg/. Как вы можете видеть, изменения в свойствах верхнего уровня отражаются на выходе, но никаких изменений в позициях нет. Я был бы очень признателен за любые подсказки о том, как это сделать.
Спасибо.
Нареш
Edit: Идеальная ситуация была бы, если бы Ember.js мог каким-то образом разобрать мой JSON-канал на вложенные объекты Ember.js. Например, что, если я явно определяю свои классы следующим образом, может ли помочь Ember.js создать нужные объекты?
App.Account = Ember.Object.extend({
id: null,
name: null,
positions: Ember.ArrayProxy.create()
});
App.Position = Ember.Object.extend({
symbol: null,
quantity: null,
lastTrade: null
});
App.account = App.Account.create(App.jsonObject);
Моя конечная цель - отобразить эту структуру в иерархической сетке, которая может расширяться/сворачиваться на уровне учетной записи. Исходя из мира WPF/Silverlight, довольно легко сделать что-то вроде этого. Все, что вам нужно сделать, это указать вложенный шаблон для сетки в XAML, и он знает, как интерпретировать вашу модель. Вы можете найти пример здесь - это не слишком сложно. Мне интересно, возможно ли что-то подобное в Ember.js.