3

由于这篇文章如何在 Ember.js 中创建嵌套模型,我已经可以将新对象推送到作业和 jobProducts 数组中?

但我似乎无法推动新的分配或交付。我在下面包含了 JSON 对象。

任何建议都会受到赞赏,当我有时间时,我会整理一下我目前所处的位置。

干杯

App.jobs = [
  {
    id: 0,
    jobTitle: "This is the only job",
    jobProducts: [
      {
        id: 0,
        productTitle: "Product 1",
        allocations:[
          {
            id: 0,
            allocationTitle: "Allocation 1",
            deliverys:[
              {
                id: 0,
                deliveryTitle: "Delivery 1"
              },
              {
                id: 1,
                deliveryTitle: "Delivery 2"
              }
            ]
          },
          {
            id: 1,
            allocationTitle: "Allocation 2",
            deliverys:[
              {
                id: 0,
                deliveryTitle: "Delivery 3"
              },
              {
                id: 1,
                deliveryTitle: "Delivery 4"
              }
            ]
          }
        ]
      },
      {
        id: 1,
        productTitle: "Product 2",
        allocations:[
          {
            id: 0,
            allocationTitle: "Allocation 3",
            deliverys:[
              {
                id: 0,
                deliveryTitle: "Delivery 5"
              },
             {
               id: 1,
               deliveryTitle: "Delivery 6"
             }
           ]
          },
          {
            id: 1,
            allocationTitle: "Allocation 4",
            deliverys:[
              {
                id: 0,
                deliveryTitle: "Delivery 7"
              },
              {
                id: 1,
                deliveryTitle: "Delivery 8"
              }
            ]
          }
        ]
      }
    ]
  }
];
4

1 回答 1

3

短:

这是一个示例:http: //jsbin.com/esixeh/7/edit

长:

在示例中,您会发现如下代码行,看起来很吓人,但它确实有效:

App.get('jobs').objectAt(0).jobProducts.objectAt(0).allocations.objectAt(0).deliverys.pushObject({...});

由于你的 JSON 结构,从App.get('jobs')对象开始只是普通的 javascript 对象,而不是从Ember.Object你不能使用 ember 方法.get('allocations').get('deliverys')在它们上并将它们链接在一起,如:

App.get('jobs').get('jobProducts').get('allocations').get('deliverys');

或者

App.get('jobs.jobProducts.allocations.deliverys');

但您仍然可以使用普通的 javascript 点符号访问器,例如.allocations.

在数组上,您仍然可以使用 ember.pushObject().objectAt()而不是 plain .push(),因为默认情况下,框架会增强数组,请参阅此处以获取更多信息。

希望能帮助到你。

于 2013-08-08T00:42:19.620 回答