Javascript AngularJS手表未被触发
我对AngularJs有意见。我创建了一个指令$watch模型,它根据模型的当前状态采取一些操作。然而,尽管在调试过程中我可以看到$watch被设置,但它只是在模型至少有效一次之后才被触发,我不知道为什么会发生这种情况。当键入某些内容时,调试它甚至不会进入$watch函数 代码如下: 指令: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
(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();
}
});