我正在制作一个自定义验证指令,但每次都是$ scope。$ watch更新ngModel如果被用户触摸则不会更新
console.log('value has changed', value);
显示值更新
但
ngModel.$touched
和ngModel.$dirty
永远不会改变它们总是一样的,我是否需要以某种方式导入它们以在指令中访问和使用它们
HTML
<div validation-directive="validation-directive"
ng-model="company.fax_number">
<input type="text" ng-model="company.fax_number"/>
<span ng-hide="!validation.status">{{validation.status}}</span>
</div>
的javascript
module.exports = [
'$log', function($log) {
return {
restrict: 'A',
require: 'ngModel',
link: function($scope, $element, $attr, $ctrl, ngModel) {
$scope.$watch($attr.ngModel, function(value) {
console.log('value has changed', value);
if (ngModel.$dirty) {
console.log('dirty', value);
}
if (ngModel.$touched) {
console.log('touched', value);
}
});
);
},
scope: true
};
}
];
答案 0 :(得分:0)
尝试使用$ attrs.ngModel。$ dirty而不是ngModel。$ dirty
希望这会有所帮助。 问候!