如何使用AngularJS范围观察JQuery选择器。$ watch()方法

时间:2013-04-30 09:10:34

标签: javascript jquery angularjs

我正在编写一个指令,需要注意使用特定类更新的元素,比如.ng-invalid。如您所知,.ng-invalid被添加到表单无效的元素中。

我需要观察这些元素以确定是否添加或删除了类。

我怎样才能做到这一点?

提前致谢

2 个答案:

答案 0 :(得分:6)

你可以$观看一个长度为$(".ng-invalid")的函数:

scope.$watch(function() {
    return $(".ng-invalid").length;
}, function (newVal, oldVal) {
    if(newVal !== oldVal) {
       console.log('changed!', newVal, oldVal);
       // do your changes here
    }
})

Fiddle。在小提琴中,我将ng-minlength="2"添加到第一个input。在该字段中键入两个字符以查看$ watch触发器。

答案 1 :(得分:1)

您的目的是否足以观看FormController$invalid属性?这将通知您表单整体无效状态的更改,例如:

// Somewhere in your directive; formCtrl is the FormController
scope.$watch(function() {
  return formCtrl.$invalid;
}, function(isInvalid, wasInvalid) {
  // ...
});