1

请查看以下 Plunker 项目。

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

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

  • 马特·迪夫
  • 汤姆坎蒂

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

我还在看这个我只需要从我的代码中抽象出来,以防我在那里做错了什么。

在此处输入图像描述

4

4 回答 4

1

如果您观察 ng-model 的服务方法并执行服务中的所有逻辑(它实际属于的位置),那将是解决问题的一种更清洁的方法。如果您使用 firstName 为 items 对象编制索引,则速度会更快。

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

于 2013-06-04T11:26:52.700 回答
0

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

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

-巴斯卡拉

于 2013-06-04T10:32:18.060 回答
0

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

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

事实上,您需要为每个名字追踪分配的姓氏。否则,一旦分配了新的,您就无法将其从列表中删除。

于 2013-06-04T10:42:09.920 回答
0

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

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

listService.removeItem(oldItem);

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

Thus, when a surname is selected and it is valid, it is added to the list. 当它被重置或未选择时(之前选择时),它会从列表中删除。

我希望这就是你要找的。

于 2013-06-04T10:43:50.660 回答