使用角度js切换html元素的可见性

时间:2015-09-23 04:41:43

标签: javascript angularjs

我已经创建了这样的html dom结构。我使用ng-click来切换DOM结构的可见性。例如,如果我在menu1中单击并且如果它不可见则将使其可见。这很完美。但我遇到了一个场景,我需要关闭menu1(如果它是打开的),点击menu1&反之亦然。可以使用ng-click& amp; NG-显示

<span ng-click ="menu1 = !menu1">
      <div ng-show="menu1">
             //Rest of DOM element
     </div>
 </span>

  <span ng-click ="menu2 = !menu2">
        <div ng-show =menu2>
    //Rest of DOM element
    </div>
  </span>

2 个答案:

答案 0 :(得分:0)

下面我将为您提供一个示例。我提供了两个按钮,通过单击它隐藏的每个按钮并显示其各自的内容 HTML:

<body ng-app="ngToggle">
    <div ng-controller="myAppCtrl">
    <button ng-click="toggleCustom()">Custom</button>
    <span ng-hide="custom">From:
        <input type="text" id="from" />
    </span>
    <span ng-hide="custom">To:
        <input type="text" id="to" />
    </span>
    <span ng-show="custom2"></span>
    <button ng-click="toggleCustom2()">Custom</button>
    <span ng-hide="custom2">From:
        <input type="text" id="from" />
    </span>
    <span ng-hide="custom2">To:
        <input type="text" id="to" />
    </span>
    <span ng-show="custom2"></span>
  </div>
</body>

和JS:

 angular.module('ngToggle', []).controller('myAppCtrl',['$scope', function($scope){
    $scope.custom = true;
    $scope.toggleCustom = function() {
        $scope.custom = $scope.custom === false ? true: false;
    };
     $scope.custom2 = true;
    $scope.toggleCustom2 = function() {
        $scope.custom2 = $scope.custom2 === false ? true: false;
     };
  }]);

答案 1 :(得分:0)

<span ng-click="menuToggle(1)">
    <div ng-show="menu1">...</div>
</span>

<span ng-click="menuToggle(2)">
    <div ng-show="menu2">...</div>
</span>

在控制器中(或在内部按键单击,但你最好在控制器中使用它(或指令取决于你的代码结构))

$scope.menuToggle = function(menu) {
    $scope.menu1 = (!$scope.menu1 && menu === 1);
    $scope.menu2 = (!$scope.menu2 && menu === 2);
};

如果我理解你的问题,你想要这个场景: 当加载组件/页面/任何内容时,没有任何内容打开(或者您可以通过设置&$ 39; $ scope.menu1 = true;&#39;在控制器中设置默认值)。然后,如果你按menu1 span,menu1将打开。如果您再次按menu1,它将关闭。如果您改为按menu2,则关闭menu1并打开menu2。

将来,请尝试对您的问题进行更具描述性的描述。希望它成功!