1

我有一个自定义验证,例如,列入黑名单。我的模型值和列入黑名单的数组如下:

model = "not_blacklisted_yet"
blacklisted = ["foo", "bar"]

我想添加"not_blacklisted_yet"blacklisted, 并以编程方式触发验证。如果我只是添加元素,则不会触发验证,因为我没有更改模型 viewValue。

我怎样才能做到这一点?

编辑,附加 plunker:http ://plnkr.co/edit/L2sJY9VOJ7s8lKCm88sM?p=preview

4

1 回答 1

1

我同意@Atrix1987 在他的评论中所说的话。您的要求需要两个入口点来触发上述验证 - 一个是表单控制器modelValue更改时,另一个是blacklisted更改时。前者已经被 的使用处理了ui-validation,所以让我们处理后一种情况。

我们希望在blacklisted更改时触发验证,因此我们需要通过使用$watch. 在您的控制器中添加以下内容:

$scope.$watch('blacklisted', function(content) {
  if (content) {
    $scope.form.model.$setValidity(
      'blacklist',
      $scope.notBlackListed($scope.form.model.$modelValue)
    );
  }
}, true);

或者这里是plunkr

于 2013-06-17T18:07:47.440 回答