【问题标题】:AngularJS - How to programmatically fire validationAngularJS - 如何以编程方式触发验证
【发布时间】:2013-06-17 14:31:02
【问题描述】:

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

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

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

我怎样才能做到这一点?

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

【问题讨论】:

标签: angularjs


【解决方案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-09-30
    • 2012-01-25
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 2017-07-15
    • 2014-04-22
    • 1970-01-01
    相关资源
    最近更新 更多