Я использую Angle UI btn-radio директиву, чтобы показать две разные кнопки:
<label class="btn btn-default" ng-model="mode" ng-change="toggleMode()" btn-radio="'Mode1'">Mode1</label>
<label class="btn btn-default" ng-model="mode" ng-change="toggleMode()" btn-radio="'Mode2'">Mode2</label>
И это хорошо работает, однако я хочу ввести некоторую проверку, чтобы при нажатии одной из этих кнопок они активировались, только если проверка прошла. Например, если я нажму на Mode2, эта кнопка будет активна только в том случае, если выполнено какое-либо условие. Проблема в том, что по умолчанию active
класс добавляется при каждом нажатии, а директива btn-radio
сохраняет состояние active
. Есть ли способ обойти это?
Вы можете посмотреть мой ответ в этом плунжере
Я просто удалил "ng-model", сделал свое собственное условие, чтобы добавить "активное" на кнопку и создал пользовательский клик, который будет проверять состояние перед переключением.
<div class="btn-group">
<label class="btn btn-default" ng-class="{active:mode==='Mode1'}" ng-click="activateMode('Mode1')">Mode1</label>
<label class="btn btn-default" ng-class="{active:mode==='Mode2'}" ng-click="activateMode('Mode2')">Mode2</label>
</div>
И функция activateMode:
$scope.activateMode = function(modeName){
//I don't allow to switch mode if the checkbox isn't checked.
if($scope.changeMode){
$scope.mode = modeName;
}
}
Надеюсь, это помогло.