我已经启动了一个演示应用程序,并遇到了这个问题,我添加到维修中的零件没有得到正确处理。这是我正在构建的第一个 Angular 。
要获取错误,请按其中一张维修卡上的更新,然后向下滚动到表单底部的数量和维修项目部分,并尝试添加新项目。它不记录表单中的内容。
This is the codepen with the full view that doesnt work.
这是 Controller 中将信息传递给工厂的函数。
$scope.addPartsPerRepair = function() {
partFactory.addPartsPerRepair($scope.newPartsPerRepair);
$scope.newPartsPerRepair = {};
};
这是工厂中将新维修添加到数组 partsPerRepair 中的函数
factory.addPartsPerRepair = function(newPartsPerRepair) {
partsPerRepairs.push(newPartsPerRepair);
};
在我抽象出维修工厂并简化我的 View 之后,我们只剩下了这个
This is the codepen with the partial view that does work.
过去 6 小时我一直在研究这段代码,试图解决这个问题,但我看不到我的问题。
其次,这更多的是一个附加问题,有没有人对如何将 partsPerRepair 保存到实际修复 [Idx] 中而不是保存在每个修复都访问的名为 partsPerRepair 的数组中有任何建议。我想我也许可以在每次修复中添加一个名为“零件”的数组,并在该数组中存储数量和项目名称,但事实证明这比我能管理的要困难。我意识到我在问两个不同的问题,但自从您阅读这里以来,我认为您可能愿意。
预先感谢您的帮助。
最佳答案
更新的CodePen .
因此,我尝试在这里解决您的两个问题,但我编辑的只是 arra yof 修复和添加零件方法,这意味着需要进行大量清理更改,例如删除旧的 partsPerRepairs
及其引用文献。
- 第一件事
newPartsPerRepair
需要初始化,这就是为什么添加部件不起作用,函数正在传递undefined
(ng-model
中用作模型的任何内容都需要初始化),这是在 Controller 中完成的 -$scope.newPartsPerRepair = {};
. - 第二次我移动了
partsPerRepairs
数组进入repairs
数组并将其命名为parts
这是数组中每个客户下的,这是为了回答您的第二个问题。 - 第三,我改变了
ng-repeats
的方式努力使用这些新的parts
数组 -ng-repeat="partsPerRepair in repairs[$index].parts track by $index"
- 最后我移动并编辑了
addNewParts
到维修工厂,以便它使用新的零件数组并可以访问维修数组。
希望这一切都有帮助。
关于javascript - angularJs 形式未正确将对象添加到数组中。 2 路绑定(bind)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41688724/