无法使数组的简单推送/拼接工作 - AngularJS

时间:2013-06-04 10:01:24

标签: arrays angularjs angularjs-service angularjs-controller

请查看以下Plunker项目。

我想在多个控制器可以访问的服务中保留一个项目列表。在此示例中,当您选择姓氏时,它将出现在列表中。但是,如果设置第二个名称,则清除列表。我只是没有弄清楚$ scope中的逻辑。$ watch

用户还应该能够选择“请选择”选项以从列表中删除名称。然后,您应该看到所有选择了姓氏的项目的列表。如图所示,下面的列表应为:

  • Matt Diff
  • Tom Canty

http://plnkr.co/edit/pbeLvR?p=preview

我仍然在看这个我只需要将它从我的代码中抽象出来,以防我在那里做错了。

enter image description here

4 个答案:

答案 0 :(得分:1)

如果您观看ng-model的服务方法并执行服务中的所有逻辑(它实际所属的位置),那么这将是解决问题的更简洁方法。如果使用firstName索引items对象,则会更快。

http://plnkr.co/edit/NxyDCy?p=preview

答案 1 :(得分:0)

我认为你的代码是写的,似乎你错过了“$ scope”。在first_name&之前导致错误..现在我可以看到日志打印&没有错误。

http://plnkr.co/edit/9BvPJh?p=preview

-Bhaskara

答案 2 :(得分:0)

您应该使用哈希保存姓名和姓氏。这里有编辑的plunkr:

http://plnkr.co/edit/dChHKr?p=preview

事实是,您需要为每个名称追踪指定的姓氏。否则,您在分配新列表后无法将其从列表中删除。

答案 3 :(得分:0)

在这里 - 这将为您解决问题:

在您的`$watch代码中,替换

listService.removeItem(oldItem);

if (newSurname === undefined || newSurname === null || newSurname === "") {
    listService.removeItem(oldItem);
}

因此,当选择姓氏并且它有效时,它将被添加到列表中。当它被重置或未被选中时(之前被选中),它将从列表中删除。

我希望这就是你要找的东西。