为什么我的ng-dirty更新到我的指令

时间:2015-06-11 18:21:52

标签: javascript angularjs

我正在制作一个自定义验证指令,但每次都是$ scope。$ watch更新ngModel如果被用户触摸则不会更新

console.log('value has changed', value);显示值更新

ngModel.$touchedngModel.$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
};
}
];

1 个答案:

答案 0 :(得分:0)

尝试使用$ attrs.ngModel。$ dirty而不是ngModel。$ dirty

希望这会有所帮助。 问候!