angular-directive - jQuery Click Event 不更新范围



在指令中,单击jQuery元素时,我正在更新范围。但它不起作用。正确的方法是什么?

angular.module('app.directives', []).directive('newContent', function() {
  return {
    link: function(scope, element, attrs) {
      var title = element.find('h1'); //getting the element
      scope.show = true;
      var that = scope;
      title.on('click', function(){
        scope.show = false; //not working
      })
    }
  }
})

现场演示

尝试这种用法scope.$apply或为了更好的性能使用scope.$evalAsync

  scope.$apply(function(){
         scope.show = false;
    })

var appModules = ['app.directives']
var app = angular.module('plunker', appModules);
app.controller('MainCtrl', function($scope) {
  $scope.name = 'World';
});
angular.module('app.directives', []).directive('newContent', function() {
  return {
    link: function(scope, element, attrs) {
      
      var title = element.find('h1');
      scope.show = true;
      
      var that = scope;
      title.on('click', function(){
       
     scope.$evalAsync(function() {
         scope.show = false;
      );
     })
    }
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="plunker" ng-controller="MainCtrl">
    <p>Hello {{name}}!</p>
    
    <div class="content" my-content>
      <h1>My Content</h1>
    </div>
    
     <div class="content" new-content>
       <h1>click me</h1>
      <h2 ng-show="show">My Content</h2>
    </div>
    
  </div>

最新更新