如何检测angularjs中范围之外的点击次数

前端之家收集整理的这篇文章主要介绍了如何检测angularjs中范围之外的点击次数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个角度控制器,只要用户点击控制器范围外,就需要重置.我该怎么做呢?

示例html:

<div id='parent'>
    <div id='1' ng-controller="ctrl1">
        <!--other things-->
    </div>

    <div id='2' ng-controller="ctrl2">
        <!--other things-->
    </div>
</div>
<div id="parent2">
        <!--other things-->
</div>

如果点击发生在div2之外,如果点击发生在ctr2之外,我希望能够重置ctrl2

ctr2内部定义了一个复位功能

解决方法

如果你想在兄弟div中发生单击时想要重置,那么控制器共享$scope的事实应该会相当简单.如果要在页面上的任何其他位置发生单击时重置div,则应将“resetting”div设置为指令,将$window对象绑定到单击处理程序:

app.directive('reset',function($window){
  return {
    template: '<div ng-class="{red: directiveToggler}">I\'m in 2' +
              ' - click me to turn red,click anywhere else to turn me normal'+
              '</div>',controller: function($scope){
    $scope.directiveToggler = true;
  },link: function(scope,element){

    var w = angular.element($window);
    w.bind('click',function(e){

      if (e.target != element[0].children[0]){
        scope.directiveToggler = false;
        scope.$apply();

      } else {
        scope.directiveToggler = true;
        scope.$apply()
      }
    })
  }
  }
})

请注意,可能有更好的方法来处理类/样式更改比我设置的更好,但问题是关于点击事件;).

Here’s a plunk to demo

猜你在找的Angularjs相关文章