在AngularJS中显示/隐藏/切换

时间:2015-05-03 08:30:36

标签: javascript angularjs

我有2个按钮的导航栏。

str2

当点击div#toggle-menu时,会显示div#sidebar-mobile-wrapper。

<div class="navbar-header">
    <div class="navbar-header">
         <div id="toggle-menu" ng-click="isShowSideBarMobile = !isShowSideBarMobile"><i class="fa fa-bars fa-3x"></i></div>
         <div id="toggle-function" ng-click="isShowRightContent = !isShowRightContent"><i class="fa fa-ellipsis-v fa-3x"></i></div>
    </div>
</div>

当我点击div#toggle-function时,会显示div#right-content-mobile。

<div id="sidebar-mobile-wrapper" class="container-fluid" ng-show="isShowSideBarMobile"></div>

这一切都奏效了。但现在我想,一次只能显示一个div。因此,当我点击#切换菜单时,如果div#right-content-mobile可见,它将是隐藏和侧边栏 - 移动 - 包装,否则。

3 个答案:

答案 0 :(得分:0)

将模型值的工作封装到控制器中是非常好的主意,这使您能够轻松地更改行为。

您可以使用以下方法:

<div class="navbar-header">
  <div id="toggle-menu" ng-click="contentToggle('mobile')">Toggle mobile</div>
  <div id="toggle-function" ng-click="contentToggle('right')">Toggle right</div>
</div>

<div ng-show="isContentToggled('mobile')">
  <strong>Mobile content</strong>
</div>
<div ng-show="isContentToggled('right')">
 <strong> Right content</strong>
</div>

使用控制器方法

$scope.content = undefined;
$scope.contentToggle = function(name){
  if ($scope.isContentToggled(name)){
    $scope.content = undefined;
  } else {
    $scope.content = name;
  }
}

$scope.isContentToggled = function (name){
  return $scope.content == name;
}

您可以在http://plnkr.co/edit/WoqtP8ZpvPh2r94ITQvf?p=preview

查看示例

答案 1 :(得分:0)

仅使用mobileMenuCollapsed变量:

<div class="navbar-header">
        <div class="navbar-header">
             <div id="toggle-menu" ng-click="mobileMenuCollapsed = !mobileMenuCollapsed"><i class="fa fa-bars fa-3x"></i></div>
             <div id="toggle-function" ng-click="mobileMenuCollapsed = !mobileMenuCollapsed"><i class="fa fa-ellipsis-v fa-3x"></i></div>
        </div>
    </div>

<div id="sidebar-mobile-wrapper" class="container-fluid" ng-show="!mobileMenuCollapsed"></div>
<div class="container-fluid right-content-mobile" ng-show="mobileMenuCollapsed"></div>

答案 2 :(得分:0)

寻找this。我希望它正是你所需要的。实际上,您需要为此任务使用现成的解决方案(例如标签,手风琴,面板)。

  <div class="navbar-header">
      <div class="navbar-header">
           <div id="toggle-menu" ng-click="isShowSideBarMobile = !isShowSideBarMobile;isShowRightContent = false;"><i class="fa fa-bars fa-3x"></i><button>isShowSideBarMobile</button></div>
           <div id="toggle-function" ng-click="isShowRightContent = !isShowRightContent;isShowSideBarMobile = false;"><i class="fa fa-ellipsis-v fa-3x"></i><button>isShowRightContent</button></div>
      </div>
  </div>
  <div id="sidebar-mobile-wrapper" class="container-fluid" ng-show="isShowSideBarMobile && !isShowRightContent">sidebar-mobile-wrapper</div>
  <div id="right-content-mobile" class="container-fluid" ng-show="isShowRightContent && !isShowSideBarMobile">right-content-mobile</div>