2015-06-11 67 views
0

我想提出一個自定義的驗證指令,但每次$範圍。$表更新ngModel如果被用戶爲什麼慣於我的NG-髒更新到我的指令

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 
}; 
} 
]; 

回答

0

嘗試使用$ attrs.ngModel。$髒的,而不是ngModel。$髒

希望這有助於。 問候!

+0

對不起!如果你想從指令中丟失捕獲焦點,試試這個: $ element.on('blur',function(){ // aweasome things }); –

+0

我在watch函數中添加了console.log($ attr.ngModel。$ dirty),每當我編輯它記錄的字段'undefined'時,這可能是因爲該指令不在輸入字段本身上?是否有一個解決方法,將保持我的指令在div而不是在輸入標記 –

+0

是!,爲什麼不使用? –