请查看以下Plunker项目。
我想在多个控制器可以访问的服务中保留一个项目列表。在此示例中,当您选择姓氏时,它将出现在列表中。但是,如果设置第二个名称,则清除列表。我只是没有弄清楚$ scope中的逻辑。$ watch
用户还应该能够选择“请选择”选项以从列表中删除名称。然后,您应该看到所有选择了姓氏的项目的列表。如图所示,下面的列表应为:
http://plnkr.co/edit/pbeLvR?p=preview
我仍然在看这个我只需要将它从我的代码中抽象出来,以防我在那里做错了。
答案 0 :(得分:1)
如果您观看ng-model的服务方法并执行服务中的所有逻辑(它实际所属的位置),那么这将是解决问题的更简洁方法。如果使用firstName索引items对象,则会更快。
答案 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);
}
因此,当选择姓氏并且它有效时,它将被添加到列表中。当它被重置或未被选中时(之前被选中),它将从列表中删除。
我希望这就是你要找的东西。