2014-10-10 78 views
1

我有一个按钮,单击时显示一个窗口,并在按钮被再次点击时隐藏它。即使点击页面中的任何其他位置,我也希望窗口关闭。

这是我的代码:

<a class="btn dropdown-toggle multiselect-btn" ng-click="content=!content;contentClick=true"> 

//The div to show hide 
<div ng-class="{'open':content}" > div content </div> 

我写上单击代码如下窗口控制器,但它没有工作..

$window.onclick = function() { 
    if($scope.contentClick){ 
    $scope.contentClick=0; 
    } 
    else{$scope.content=false; 
    $scope.$apply();} 

    } 

什么是做到这一点的正确方法任何人都可以请指导我在正确的方向。谢谢。

回答

0

试试这个,改变你的控制器ID:

window.onclick = function() { 
      var scope = angular.element(document.getElementById('controller_id')).scope(); 
      if(scope.contentClick){ 
       scope.contentClick=0; 
      } 
      else{ 
       scope.content=false; 
       scope.$apply(); 
      } 
} 
0

我不知道你想实现被点击的内容以后有什么,但你可以$watchcontent value在控制器和运行一些操作时的内容变化值

请参考下面的脚本

var app = angular.module('app', []); 
 

 
app.controller('fCtrl', function($scope) { 
 

 
    $scope.$watch('content', function(value) { 
 

 
    if (value) { 
 

 
     $scope.contentClick = 1; 
 
    } else { 
 
     $scope.contentClick = 0; 
 
    } 
 

 

 
    }) 
 

 
});
.open { 
 
    color: red ;opacity: 0.5; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app"> 
 
    <div ng-controller="fCtrl"> 
 

 
    <a class="btn dropdown-toggle multiselect-btn" ng-click="content=!content;contentClick=true">Click me </a> 
 
    <hr/>//The div to show hide 
 
    <div ng-class="{'open':content}">div content {{contentClick}} 
 
    </div> 
 
    </div> 
 
</div>