【问题标题】:ionic - How to change button colour when it is being clickionic - 单击时如何更改按钮颜色
【发布时间】:2017-05-17 10:07:34
【问题描述】:

目前,我正在尝试使我的移动应用程序成为当我进入我的应用程序时,我的 OFF 按钮的默认灰色(活动)。 ON 按钮的默认绿色(未激活)。点击 ON 按钮后,ON 按钮变为灰色(激活),而 OFF 按钮变为红色(未激活)。当我点击OFF按钮时,按钮将变回灰色(活动)。

我正在展示我想要实现的粗略想法。有人知道怎么用flag编码吗?

controller.js

.controller('singleProjectorRoomCtrl', ['$scope', '$stateParams', function($scope, $stateParams) {

$scope.buttonState = false;


function toggleButtonState ()
{
    if ($scope.buttonState == false)
    {
        $scope.buttonState = true;
    }
    else
    { 
       $scope.buttonState = false;
    }  
};

$scope.goBack = function() {
window.history.back();
}

}])

html

<ion-view title="Single Projector Room" id="page9">

<ion-nav-buttons side="left">
    <button class="button back-button buttons button-clear header-item" ng-click="goBack()">
      <i class="icon ion-ios-arrow-back"> Back</i> 
    </button>
  </ion-nav-buttons>

  <ion-content padding="true" style="background: url(img/EDD79InSMCeYeMOSchjm_remote.jpg) no-repeat center;background-size:cover;" class="has-header">

  <div class="row">
    <div class="col"><br><br><br><br></div>
  </div>

  <div class="row">
  <div class="col col-offset-5 col-30 text-center"><h4 style="color: #FFFFFF;">Single Projector Control</h4></div>
  <div class="col col-30 text-center"><h4 style="color: #FFFFFF;">Screen Control</h4></div>
  </div>

  <div class="row">
    <div class="col col-offset-5 col-30 text-center"><button class="button button-balanced button-large icon-right ion-power" ng-click="toggleButtonState()" ng-if="buttonState=true; button-stable">On</button></div>
    <div class="col col-30 text-center"><button class="button button-dark button-large icon-right ion-arrow-up-c">Up</button></div>
  </div>

  <div class="row">
    <div class="col col-offset-5 col-30 text-center"><button class="button button-assertive button-large icon-right ion-android-cancel" ng-click="toggleButtonState()" ng-if="buttonState=true; button-stable">Off</button></div>
    <div class="col col-30 text-center"><button class="button button-dark button-large icon-right ion-arrow-down-c">Down</button></div>
  </div>

  <div class="row">
    <div class="col"><br><br></div>
  </div>

  <div class="row">
  <div class="col col-offset-5 col-30 text-center"><h4 style="color: #FFFFFF;">Mic Control</h4></div>
  </div>

  <div class="row">
    <div class="col col-offset-5 col-30 text-center"><button class="button button-balanced button-large icon-right ion-power">On</button></div>
  </div>

  <div class="row">
    <div class="col col-offset-5 col-30 text-center"><button class="button button-assertive button-large icon-right ion-android-cancel">Off</button></div>
  </div>
</div>

  </ion-content>
</ion-view>

【问题讨论】:

    标签: angularjs cordova ionic-framework


    【解决方案1】:

    您可以使用ng-class 指令。使用您现有的代码,您需要做的就是:

    HTML:

    <button class="myButtonClass" ng-class="{buttonActive: buttonState == true}" ng-click="buttonState = !buttonState">
        Toggle Me
    </button>
    

    然后你就会有你的 CSS 类:

    .myButtonClass {
        background: gray;
    }
    .myButtonClass.buttonActive {
        background: red !important;
    }
    

    这是一个基本的演示:http://jsfiddle.net/mbndkt9L/3/

    【讨论】:

    • 所以我的旗帜保持不变?我试过输入代码。但是,该按钮变为灰色,单击时未激活。有什么解决办法吗?
    • 我的回答中有一个类型。它应该是 .myButtonClass.buttonActive 而不是 .myButtonClass .buttonActive。我已经确定了答案,现在试试吧
    • 它似乎仍然无法正常工作。单击时该按钮仍处于非活动状态。
    • 添加了一个 jsfiddle 演示,看看
    • 有效!但是,因为我有 2 个按钮。 1 为 ON,另一个为 OFF。你知道如何改变两个按钮之间的活动模式吗?