2016-08-02 35 views
2

我有下面的代码:AngularJS NG-禁用关闭所有元素

<body ng-app="vote"> 
    <div> 
     <div class="vote"> 
      <button ng-disabled="this.isDisabled" voteplus>+</button> 
     </div> 
     <div class="vote"> 
      <button ng-disabled="isDisabled" voteplus>+</button> 
     </div> 
     <div class="vote"> 
      <button ng-disabled="isDisabled" voteplus>+</button> 
     </div> 
     <div class="vote"> 
      <button ng-disabled="isDisabled" voteplus>+</button> 
     </div> 
     <div class="vote"> 
      <button ng-disabled="isDisabled" voteplus>+</button> 
     </div> 
    </div> 
</body> 

和指令:

angular.module('vote', []) 

.directive('voteplus', function() { 
    return { 
     link: function(scope, element, attrs) { 
      element.bind('click', function(e){ 
       scope.isDisabled = true; 
       scope.$apply(); 
      }); 
     } 
    } 
}); 

它的作品,但它禁止网页上的所有元素,我只需要电流。我应该改进什么?

回答

5

您需要为指导创建新的范围:

.directive('voteplus', function() { 
    return { 
     scope: true, // <-- add this 
     link: function(scope, element, attrs) { 
      element.bind('click', function(e){ 
       scope.isDisabled = true; 
       scope.$apply(); 
      }); 
     } 
    } 
}); 

随着scope: true你告诉指令来创建一个新的子范围(从基地之一prototypically继承)。在这种情况下scope.isDisabled = true只会改变本地子标志。

+0

非常感谢! – Dan