javascript - angularJs 形式未正确将对象添加到数组中。 2 路绑定(bind)不起作用

标签 javascript angularjs arrays

我已经启动了一个演示应用程序,并遇到了这个问题,我添加到维修中的零件没有得到正确处理。这是我正在构建的第一个 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/

相关文章:

javascript - 在 AngularJS 中为列表项加载部分 *没有* 路由

javascript - 将文本框的值更改为其在可排序选项卡中的当前顺序

javascript - 如何使用 Javascript 将事件处理程序动态附加到文档元素?

angularjs - 如何在 Angularjs 中订购父子层次结构

javascript - 在 ng-grid 中添加带有计算字段的新行

c - 函数中的数组显示不正确

php - 如何使用数组中的多个关键字搜索 mysql 表中的列?

c++ - 数组大小不定

javascript - 在 JavaScript 中使用 RegExp 查找所有匹配的选择器

javascript - createElementNS() 之后更改字体颜色