当前位置: 首页 > 面试题库 >

如何在指令(AngularJS)中设置有效性

陶成化
2023-03-14
问题内容

有没有一种方法可以在指令内部设置输入有效性?指令模板中存在的输入。

可以说我有模板:

<input type="text" ng-model="someObj.val" ng-change="check()">

我的指令就像:

.directive('myDir', function () {
      return {
        restrict: 'E',
        templateUrl: 'trmplate.html',
        link: function (scope) {

          someObj = {val: '123'};

          scope.check = function () {
            var result = false;
            myInput.$setValidity(result); //this is didn't work, $setValidity not a function
          };

        }
      }
    })

我不能用表单包装它,因为其背后的思想是允许用户将此输入包含在用户的表单中。


问题答案:

您需要检索与输入关联的NgModelController实例。然后调用$setValidity此对象,指定验证密钥(必需,最小长度,自定义密钥等)。它看起来像这样:

.directive('myDir', function() {
  return {
    restrict: 'E',
    template: '<input type="text" ng-model="someObj.val" ng-change="check()">',
    link: function(scope, element) {

      var modelController = element.find('input').controller('ngModel');

      someObj = {
        val: '123'
      };

      scope.check = function() {
        var result = false;
        modelController.$setValidity('myrequired', result);
      };

    }
  }
})

这里最重要的部分是如何获取NgModelController。下面的代码行正在处理它:

var modelController = element.find('input').controller('ngModel');


 类似资料:
  • 问题内容: 我想编写类似于以下内容的HTML: 并且有一个名为“ sharedasset”的指令,该指令获取到完整的路径并设置属性的值,而该指令事先不知道属性名称是什么。这可能吗? 更新资料 自从我最初发布此内容以来,对Angular进行了一些改进,因此我想分享一下我现在所做的事情。在HTML中,我使用Guido Bouman的答案(即创建一个过滤器),现在有了Angular的 一次绑定 功能,这

  • 问题内容: 我尝试创建一个指令,当输入字段标记为无效时,该指令应执行一些操作。对于此示例,假设我有一条指令检查输入是否为素数,并且我想创建一条指令,在无效时将一个类添加到元素: validate-prime使用ng-model上的解析器和格式化程序来更新模型的有效性。 现在,我希望invalid-add-class指令在模型无效时添加“错误”类,并在有效时将其删除。换句话说,它应该监视模型控制器的

  • 问题内容: 我喜欢使用指令制作自定义组件。我检查了很多教程,它使我感到困惑,任何人都可以解释指令的工作原理。我计划制造的组件是 呼喊列表的模板将像这样 问题答案: 这是您的指令,带有一些内联注释: 和模板文件: 现在,您可以在代码中使用它,如下所示: 控制器: 视图: 希望这可以帮助!

  • 本文向大家介绍AngularJS内置指令,包括了AngularJS内置指令的使用技巧和注意事项,需要的朋友参考一下 指令,我将其理解为AngularJS操作HTML element的一种途径。 由于学习AngularJS的第一步就是写内置指令ng-app以指出该节点是应用的根节点,所以指令早已不陌生。 这篇日志简单记录了一些内置指令,先使用起来,再谈一些有趣的东西。 内置指令 所有的内置指令的前缀

  • 问题内容: 如何在指令中设置插值?我可以从以下代码中读取正确的值,但无法设置它。 js: HTML: 我的控制器范围内的值在哪里? 问题答案: 如果要在范围上设置值,但不知道属性名称(提前),则可以使用以下语法: 如果属性中的字符串包含点(例如),则将无法使用;您可以用来做作业: 如果使用隔离范围,则可以使用批注: 您可以在此Angular /jQuery颜色选择器JSFiddle示例中看到一个示

  • 问题内容: 我不确定这是这样做的方法,但是我的目标是: 我有一个家长指令 在父指令的代码块中,我有一个子指令,它将从用户那里获得一些输入 子指令将在父指令的范围内设置一个值 我可以从那里拿走 当然,问题在于父和子指令是同级的。所以我不知道该怎么做。注意-我不想在 小提琴:http : //jsfiddle.net/rrosen326/CZWS4/ 的HTML: Java脚本 问题答案: 如果要进行