Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS手表未被触发_Javascript_Angularjs_Angularjs Directive - Fatal编程技术网

Javascript AngularJS手表未被触发

Javascript AngularJS手表未被触发,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我对AngularJs有意见。我创建了一个指令$watch模型,它根据模型的当前状态采取一些操作。然而,尽管在调试过程中我可以看到$watch被设置,但它只是在模型至少有效一次之后才被触发,我不知道为什么会发生这种情况。当键入某些内容时,调试它甚至不会进入$watch函数 代码如下: 指令: (function() { 'use strict'; var app = angular.module('app'); app.directive('tooltipValida

我对AngularJs有意见。我创建了一个指令$watch模型,它根据模型的当前状态采取一些操作。然而,尽管在调试过程中我可以看到$watch被设置,但它只是在模型至少有效一次之后才被触发,我不知道为什么会发生这种情况。当键入某些内容时,调试它甚至不会进入$watch函数

代码如下:

指令:

(function() {
    'use strict';

    var app = angular.module('app');

    app.directive('tooltipValidation', function () {


        return {
            restrict: 'A',
            require: 'ngModel',
            link: function (scope, element, attrs, ngModel) {

                var tooltip = $(element).qtip({
                    content: {
                        text: element.next('div')
                    },
                    show: false,
                    hide: true
                }).qtip('api');

                scope.$watch(attrs.ngModel, function() {
                    if (ngModel.$invalid && ngModel.$dirty) {
                        tooltip.show();
                    } else {
                        tooltip.hide();
                    }
                });
            }
        };
    });
})()
HTML:


包括新的发货地址:
别名

必须

最多32个字符

街头

必须

最多256个字符

ZipCode

必须

8位数字

问候,

dimello

试试:

scope.$watch(function(){
            return ngModel.$viewValue; //Watch for view value (the value in your input)
          }, function() {
           if (ngModel.$invalid && ngModel.$dirty) {
                 tooltip.show();
           } else {
                 tooltip.hide();
           }
   });

说明

当您使用ng模型在输入中键入一个无效的值时,基础模型不会更新,从而导致您的
范围。$watch(attrs.ngModel
未被激发,因为您正在监视模型中的更改。如果您需要在每次输入更改时激发该函数,无论该函数是否有效,请尝试上述解决方案。

该解决方案有效。先前的(编辑前,使用ngModel.$modelValue)无效,但新的(使用ngModel.$viewValue)很好。你的解释很有道理,我怀疑这就是原因,但不知道如何解决。谢谢。
scope.$watch(function(){
            return ngModel.$viewValue; //Watch for view value (the value in your input)
          }, function() {
           if (ngModel.$invalid && ngModel.$dirty) {
                 tooltip.show();
           } else {
                 tooltip.hide();
           }
   });