更新模型在UI中有很多关系

时间:2014-04-18 23:19:19

标签: ember.js ember-data

我试图修改hasMany关系视图内容的一些UI元素。我有两个基本型号,容器和物品。容器有多个项目,它们可以有不同数量的项目。例如:

App.Container.FIXTURES = [
  {id:1,name:'Container 1',slots:[0,0]},
  {id:2,name:'Container 2',slots:[0,0,0,0]},
  {id:3,name:'Container 3',slots:[0,0,0]}
];

我使用id 0作为空项目的一种。它显示此容器可以在此处有一个项目,但它当前是空的。每个位置都有许多不同的项目。

在我的应用中,我有一个我创建的自定义用户界面,允许用户选择新项目来填充每个插槽。问题在于,由于某种原因,它没有在容器模型中更新。无论我尝试什么,它只是在视图中更新,而不是在实际的模型实例上。我认为这样可行,因为属性会自动绑定。

我创建了a JSBin here displaying the problem。如果单击“保存”按钮,模型当前状态的json对象将打印到控制台。

如何更新实际的模型属性?请记住,这个职位很重要。例如,如果我改变三个中间位置的项目,只有它应该更新; 推到最后。

感谢。任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:0)

这是一个建模问题。

你有容器,每个容器都有很多项目...除了实际正在发生的是你正在使用Item类作为选项 - 这是你的目录,如果你愿意,并且你想将这些项目放入你没有为其创建模型的“插槽”中。

所以,根据你想做什么,你应该可能这样建模(使用更好的名字 - 我选择了我的解释清晰度):

Container hasMany Slots,每个Slots都连接到其Item 所以:Container hasMany - >插槽< - belongsTo Item

也就是说,你有一个非规范的“连接”,你现在称之为“插槽”并附加到Container。

我说取决于你想做什么因为我不确定你是否想要我上面概述的简单案例,这是“这里有一堆可以选择的项目将任意数量的副本放入您的容器中“或者如果您想要更复杂的开发案例”这里是一堆有限的项目......当您将每个项目添加到容器中时,它会从列表中消失可能性“。要做到这一点要复杂得多,但当然有可能......这就是库存系统的运作方式。

我希望这已经回答了你的问题......

换句话说,您需要自己构建一个与其他模型相关的Slot模型,并正确管理连接。如果将插槽正确地绑定到每个下拉列表,则Ember将负责为您提供数据连接。

如果您需要有关如何执行此操作的进一步帮助,请与我们联系。

我已经修改了你的JSBin,全面地向你展示我的意思。希望有助于解释它:

http://emberjs.jsbin.com/tenoqimu/5/edit