watch在angularJs中的指令链接中不起作用

时间:2017-04-09 15:54:19

标签: javascript jquery html css angularjs

保存按钮,当它们是错误消息时,将被禁用

<user-textbox name="txtbox" error-Message="errormsg"></user-textbox>
<button  id="modalSaveButton" type="button" ng-click="save()" data-dismiss="{{ errormsg ? '' : 'modal' }}" value="Save"></button>

指令

            link(scope) {   
                        scope.errormsg = false;
                        function disableSave (n, o) {
                          const eleModalSave = 
                                angular.element(document.querySelector('#modalSaveButton'));
                                if(scope.errormsg) {
                                   eleModalSave.attr('disabled',"");
//save button should get disable if errormsg is true
                                } else {
                                   eleModalSave.removeAttr('disabled');
                                }
                        }

                        scope.$watch('errormsg',disableSave, true);
                    }

O / P:保存按钮即使出现错误也不会被禁用

1 个答案:

答案 0 :(得分:0)

所以在指令标记中你写了:

<user-textbox name="txtbox" error-Message="errormsg"></user-textbox>

您能否在标记中将属性名称更改为错误消息。 所以它看起来像:

<user-textbox name="txtbox" error-message="errormsg"></user-textbox>

Angular会将范围内的这个转换为$ scope.errorMessage, 这意味着您的指令声明应如下所示:

.directive('userTextbox', function(){
  scope : {
     errorMessage :'='
  },
  link : ['$scope', function($scope){
      $scope.$watch('errorMessage', function(newVal, oldVal) {

     })]
  }
})