在ember中嵌套的json对象

时间:2013-08-10 09:29:07

标签: ember.js ember-data

以下链接适用于职位,但是当我添加另一个对象(公司)时,它没有显示任何内容。

Refer the fiddle

App.jsonObject = {
    id: 1812,
    name: 'Brokerage Account',
    positions: [
        {
            symbol: 'AAPL',
            quantity: '300',
            company:[
                {
                    no: '1',
                    name: 'test'
                }
                ]
        },
        {
            symbol: 'GOOG',
            quantity: '500',
            company:[
                {
                    no: '2',
                    name: 'test123'
                }
                ]
        }
    ]
};

1 个答案:

答案 0 :(得分:2)

这不起作用的原因是因为在你的JSON结构中你有简单的javascript对象。要让ember知道更改和绑定工作,您总是需要使用框架的方法,如Ember.Object.create(就像您已经使用App.account),objectAt(0)pushObject()等。创建您的数据结构。这样,您的绑定和其他所有内容将按预期工作。

编辑以回应您的上次评论

简单直接的方法是将代码更改为:

App.account = Ember.Object.create({
  id: 1812,
  name: 'Brokerage Account',
  positions: Ember.A([
    Ember.Object.create({
      symbol: 'AAPL',
      quantity: '300',
      company: Ember.A([
        Ember.Object.create({
          no: '1',
          name: 'test'
        })
      ])
    }),
    Ember.Object.create({
      symbol: 'GOOG',
      quantity: '500',
      company: Ember.A([
        Ember.Object.create({
          no: '2',
          name: 'test123'
        })
      ])
    })
  ])
});

因此,您可以稍后使用框架方法并执行以下操作:

App.get('account').get('positions').pushObject(Ember.Object.create({symbol: 'MSFT', quantity: 200}));

App.get('account').get('positions').objectAt(0).setProperties({'quantity': 500});

在这里你的更新小提琴:http://jsfiddle.net/WkGkj/3/

  

注意,小提琴现在正在工作,但请不要引用我的方法,因为它不是构建ember应用程序的首选ember方式,我只是努力备份我的答案:)另外值得一提的是在你的小提琴你正在使用'ember 0.9.4 which is now very outdated since version 1.0.0-rc.6.1`。

希望它有所帮助。