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

AngularJS指令监视有效性

柯波
2023-03-14
问题内容

我尝试创建一个指令,当输入字段标记为无效时,该指令应执行一些操作。对于此示例,假设我有一条指令检查输入是否为素数,并且我想创建一条指令,在无效时将一个类添加到元素:

<input type="text" ng-model="primeNumber" validate-prime invalid-add-class="error">

validate-prime使用ng-model上的解析器和格式化程序来更新模型的有效性。

现在,我希望invalid-add-class指令在模型无效时添加“错误”类,并在有效时将其删除。换句话说,它应该监视模型控制器的$ valid(或$
invalid)属性。但是,我不知道如何使它工作。我试过了:

link : function(scope, element, attrs, ctrl) {
    ctrl.$watch("$valid", function(newVal, oldVal) {
    //never fired
    });
}

也许我可以观察范围内的某些变量,但是我不知道要监视哪个变量。

那么,当模型的有效性发生变化时,如何通知我?


问题答案:

如果您有一个<form>,请向其添加一个name(假设为“
myForm”),并name为您的输入添加一个(假设为myInput)。您应该可以$watch通过以下方式做到这一点:

scope.$watch('myForm.myInput.$valid', function(validity) {})

如果您没有form,则可以随时观看功能。这条路:

scope.$watch(function() { return ctrl.$valid; }, function(validity){});

您可以在此处阅读有关表单方法的更多信息。



 类似资料:
  • 问题内容: 将一个类添加到元素时,我想向该元素添加另一个类。当一个类被删除时,我想删除一个元素。我基本上是将一些引导程序类映射到某些角度形式验证类,但是当从元素中添加/删除一个类时,我无法弄清楚如何触发我的代码(还要确保不要引起类更改的无限循环) 。 到目前为止,这是我的指令的内容: 因此,基本上,当添加到元素时,我想将bootstrap类添加到父元素。何时删除,我想删除。 我想在Angular中

  • 问题内容: 有没有一种方法可以在指令内部设置输入有效性?指令模板中存在的输入。 可以说我有模板: 我的指令就像: 我不能用表单包装它,因为其背后的思想是允许用户将此输入包含在用户的表单中。 问题答案: 您需要检索与输入关联的NgModelController实例。然后调用此对象,指定验证密钥(必需,最小长度,自定义密钥等)。它看起来像这样: 这里最重要的部分是如何获取NgModelControll

  • 主要内容:AngularJS 指令,AngularJS 实例,数据绑定,AngularJS 实例,重复 HTML 元素,AngularJS 实例,AngularJS 实例,ng-app 指令,ng-init 指令,ng-model 指令,ng-repeat 指令,创建自定义的指令,AngularJS 实例,限制使用AngularJS 通过被称为 指令 的新属性来扩展 HTML。 AngularJS 通过内置的指令来为应用添加功能。 AngularJS 允许你自定义指令。 AngularJS 指令

  • 问题内容: 我有一个控制器,它的计数器会不时变化。 该计数器与指令的属性绑定,并在该指令的链接函数内部读取。 每当attr值更改时,如何让指令运行函数? 谢谢。 问题答案: 里面的相应的功能:(假设你的属性称为你的范围变量是:) 其他方式,肯定是更有效的方式: 插值属性 在指令内部,将属性设置如下(它将被隔离): 只要调用该函数,就会自动观察提供当前值的。 比这里要好,因为我想您不会在指令中将计数

  • 问题内容: 我正在尝试在Angular中实现d3指令,这很困难,因为在视觉上什么也没有发生,并且在控制台上没有抛出任何错误。 这是我的d3指令: 这是我的HTML: 起初我以为不是要附加,因为要检查看起来像的元素,但是现在我认为该指令根本没有在运行。我从一开始就将其嵌入其中,也没有出现。我缺少简单的东西吗? 编辑: 我尝试将顶行更改为 但这也不起作用。我什至不知道两个标题之间有什么区别… 问题答案

  • 问题内容: 在angularJs中可以观看全局变量吗? 我从旧版代码中设置了一个window.test变量,然后我需要观察该变量以了解它是否存在。 我尝试过类似的东西 问题答案: 有些。您可以包含Angular 服务(如文档所述,比直接访问更安全): 然后使用watch函数作为您的第一个参数,如下所示: 演示小提琴 但是请注意,只有在触发Angular进行$ digest操作后,才会执行。一种可行