修改$ watch中的监视值

时间:2015-02-13 23:35:54

标签: javascript angularjs angularjs-watch

我有一个<input ng-model='list' ng-list>,我想确保此文本字段中没有重复项 - 如果列表包含重复项,我想自动删除它们。

我在控制器中放了一个$scope.$watch('list', function(listValues) {,并尝试从listValues删除任何重复项,但有问题。在监视功能中,如果我设置listValues = _.unique(listValues),则$scope.list的值永远不会改变。如果我尝试$scope.list = _.unique(listValues),我会收到有关已经运行的摘要周期的错误。

如何观察要更改的范围变量,以及何时更改该新值?

以下是一个不起作用的示例:http://plnkr.co/edit/b0bAuP1aXPg3HryxCD9k?p=preview

我认为这很简单。我还应该使用其他方法吗?

1 个答案:

答案 0 :(得分:0)

在这种情况下,

ng-change可能是更好的方法。特别是ng-change的这个属性:

  

如果以编程方式更改模型而不是更改   输入值

如果您将重复数据删除放入某个功能中,然后使用ng-change进行调用,我认为您将获得所需的结果。