0

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

参考小提琴

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'
                }
                ]
        }
    ]
};
4

1 回答 1

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 version1.0.0-rc.6.1”就在附近。

希望能帮助到你。

于 2013-08-10T10:17:58.957 回答