关于Angular通过 ng-click操作数据使元素显示隐藏的问题。

在controller中定义了点击函数——一个布尔值的取反,把返回的布尔值绑定在ng-show上,在click时运行函数,不能正常的显示隐藏,代码如下
`

    HTML:
   <div class="siderbar col-lg-2" ng-controller="siderbarCtrl">
    <!-- 导航的第一块 -->  
    <span  ng-click="show(Financial_show)"  class="Financial">Financial Dashboard</span>        
    <div  ng-show="Financial_show" class="check-element animate-show">
        <a ui-sref="index.Overview" >Overview</a>
        <a ui-sref="index.OrganizationRoster" >Organization Roster</a>
        <a ui-sref="index.CustomerRollup" >Customer Rollup</a>                          
    </div>
    
    <!-- 导航的第二块 -->
    <span  ng-click="show(Operational_show)" class="Operational " >Operational Dashboard</span>
    <div ng-show="Operational_show" class="check-element animate-show" >
        <a ui-sref="index.Overview" >Overview</a>
        <a ui-sref="index.OrganizationRoster" >Organization Roster</a>
        <a ui-sref="index.CustomerRollup" >Customer Rollup</a>                       
    </div>
        
    <!-- 导航的第三块 -->
    <span ng-click="show(Opportunity_show)"  class="Opportunity" >Opportunity Tracker</span>
    <div ng-show="Opportunity_show" class="check-element animate-show">
        <a ui-sref="index.Overview"  >Overview</a>
        <a ui-sref="index.OrganizationRoster"  >Organization Roster</a>
        <a ui-sref="index.CustomerRollup"  >Customer Rollup</a>                          
    </div>                         
  </div>

JS:

  .controller("siderbarCtrl",["$scope",function($scope){
$scope.Financial_show=false;
$scope.Operational_show=true;
$scope.Opportunity_show=false;
$scope.show=function(ele){
    
    return $scope.ele=!$scope.ele;
}}]);

下面的代码可以正常的显示隐藏:

    HTML:
   <div class="siderbar col-lg-2" ng-controller="siderbarCtrl">
     <!-- 导航的第一块 -->  
    <span  ng-click="Financial_show=!Financial_show"  class="Financial">Financial Dashboard</span>        
    <div  ng-show="Financial_show" class="check-element animate-show">
        <a ui-sref="index.Overview" >Overview</a>
        <a ui-sref="index.OrganizationRoster" >Organization Roster</a>
        <a ui-sref="index.CustomerRollup" >Customer Rollup</a>                          
    </div>
    
    <!-- 导航的第二块 -->
    <span  ng-click="Operational_show=!Operational_show" class="Operational " >Operational Dashboard</span>
    <div ng-show="Operational_show" class="check-element animate-show" >
        <a ui-sref="index.Overview" >Overview</a>
        <a ui-sref="index.OrganizationRoster" >Organization Roster</a>
        <a ui-sref="index.CustomerRollup" >Customer Rollup</a>                       
    </div>
        
    <!-- 导航的第三块 -->
    <span ng-click="Opportunity_show=!Opportunity_show"  class="Opportunity" >Opportunity Tracker</span>
    <div ng-show="Opportunity_show" class="check-element animate-show">
        <a ui-sref="index.Overview"  >Overview</a>
        <a ui-sref="index.OrganizationRoster"  >Organization Roster</a>
        <a ui-sref="index.CustomerRollup"  >Customer Rollup</a>                          
    </div>                       
  </div>

JS:

  .controller("siderbarCtrl",["$scope",function($scope){
$scope.Financial_show=false;
$scope.Operational_show=true;
$scope.Opportunity_show=false;
}]);

初学者请前辈们指点,指点~~

  
  
     `
阅读 6.7k
2 个回答

ng-click='show()'

$scope.show=function(){

$scope.Financial_show=!$scope.Financial_show;

}

不需要传递参数,直接在定义的show函数里面控制绑定的那个值。你之前传递过去的参数赋予的那个值ele也没有初始化。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题