Html 如何在 AngularJS 中使用带按钮的 ng-show 和 ng-hide

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/25074688/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-29 02:24:52  来源:igfitidea点击:

How to use ng-show and ng-hide with buttons in AngularJS

htmlangularjs

提问by user3811714

I have two buttons Start and Stop,when I click the Start button I want the Stop button to show and the Start button to be hidden vice versa when I click the Stop button I want the Start button to be shown and the Stop button to be hidden.Only one button must be shown at any one time.Here is what I tried but it doesn't seem to work.Where am I going wrong?

我有两个按钮开始和停止,当我单击开始按钮时,我希望显示停止按钮并隐藏开始按钮,反之亦然当我单击停止按钮时我希望显示开始按钮和停止按钮隐藏。在任何时候只能显示一个按钮。这是我尝试过的,但似乎不起作用。我哪里出错了?

<span ng-hide="Model.StartEvent == true">
    <button ng-click="Model.StartEvent()" id="btnEventStart">Start</button>
</span>

<span ng-show="Model.StopEvent == false">
    <button ng-click="Model.StopEvent()" id="btnStopEvent" class="tooltip">Stop</button>
</span>

采纳答案by harishr

you should use same variable for both...

你应该对两者使用相同的变量......

<button ng-click="Model.toggleShow(); Model.StartEvent()" ng-show="Model.showStartEvent">Start</button>

<button ng-click="Model.toggleShow(); Model.StopEvent()" ng-show="!Model.showStartEvent">Stop</button>


Modal.toggleShow = function(){
  Model.showStartEvent = !Model.showStartEvent;
}

also you can call toggle right inside the startevent/stopevent rather than having two function calls on ng-click

您也可以在 startevent/stopevent 内部调用切换,而不是在 ng-click 上调用两个函数

回答by Dylan

You could do even less

你可以做得更少

<button ng-click="goEvent();" ng-hide="going">Start</button>
<button ng-click="goEvent();" ng-show="going">Stop</button>

...

$scope.going = false;

$scope.goEvent = function(){
   $scope.going = !$scope.going;
   if($scope.going){  
       $scope.go();
   }else{
       $scope.stop();
   }      
}

回答by SilentTremor

Html:

网址:

<div ng-controller="YourController">  
<span ng-hide="EventRunning"><button ng-click="StartEvent($event)"id="btnEventStart">Start</button></span> 
<span ng-show="EventRunning"><button ng-click="StopEvent($event)" id="btnStopEvent">Stop</button></span>  
</div>

Use single semaphore for hide and show EventRunning

使用单个信号量隐藏和显示EventRunning

Controller:

控制器:

{ ...
     $scope.EventRunning = false;
     $scope.StartEvent = function (event) {
            event.preventDefault();
            $scope.EventRunning = true;
            // your code 
    }

    $scope.StopEvent = function (event) {
            event.preventDefault();
            $scope.EventRunning = false;
            // your code 
    } 
... }