【发布时间】:2012-02-29 11:14:59
【问题描述】:
通过 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)被绑定到模板,嵌套的位置数组没有被正确绑定。因此,添加、删除或更新位置不会影响显示。是否有手动或自动的方法来转换位置数组以使其具有绑定意识(类似于 WPF 中的 ObservableCollection)?
我创建了一个 jsfiddle 来试验这个:http://jsfiddle.net/nareshbhatia/357sg/。如您所见,对顶级属性的更改会反映在输出中,但对位置的任何更改都不会。我将非常感谢有关如何执行此操作的任何提示。
谢谢。
纳雷什
编辑: 理想的情况是 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 中为网格指定一个嵌套模板,它知道如何解释您的模型。你可以找到一个例子here - 这并不难理解。我想知道在 Ember.js 中是否有可能发生这样的事情。
【问题讨论】:
-
我对 WPF 或它的控件不是很熟悉(近 4 年没有使用它),但看起来在 Ember & 中实现这样的东西应该还不错车把。
标签: ember.js