如果在angularjs中div之外点击,如何隐藏div

时间:2017-08-08 18:37:02

标签: javascript html css angularjs

  

对于我想要的通知,如果点击它之外我的div将被隐藏   plunker code link   HTML代码是

<div ng-hide="notification" ng-click="notifications($event);"><i class="fa fa-bell" aria-hidden="true"></i></div>
<div ng-hide="notifyData">
    <ul>
        <li ng-repeat="noti in newNotificationarray">
            <div class="notifymsg">{{noti.msg}}</div>
            <div class="notifytitle">
                <a href="#">{{noti.title}}</a>
            </div>
            <div class="notifyName">{{noti.cName}}</div>
        </li>
    </ul>                                
</div>
  

控制器中的js代码是

$scope.notifications=function(event){
    $scope.notifyData=!($scope.notifyData);          
    event.stopPropagation();
};

window.onclick = function(){
    if ($scope.notifyData) {
        $scope.notifyData=false;          
        $scope.$apply();
    }
};
  

如果我不使用&#34; event.stopPropagation();&#34;然后在屏幕上的任意位置以及通知div上单击隐藏div

1 个答案:

答案 0 :(得分:0)

首先,您需要注入窗口服务。你应该这样做,以便它可以在你的测试中被模拟。

此外,更新window的onclick处理程序中的逻辑。

var app = angular.module("myapp", []);
app.controller('mycontroller', ['$scope', '$window', function($scope, $window) {
  ...
  $window.onclick = function(event) {
    if (!$scope.notifyData) {
      $scope.notifyData = true;
      $scope.$apply();
    }
  }

}]);