简体   繁体   English

如何在AngularJS中通过按钮使用ng-show和ng-hide

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

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>

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();
   }      
}

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上进行两次函数调用

Html: 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 
    } 
... }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM