Angular.jsで複数から選択するボタンを作って、classの有無でスタイルを変更してみます。
サンプルコード
まずは複数選択できるボタンを作ってみます。
HTML
<div ng-controller="button_ctrl"> <div class="button-wrapper"> <div class="button-item" ng-repeat="button in buttonData" ng-class="{selected: button.select}" ng-click="buttonClick($index)">{{button.text}}</div> </div> </div>
JavaScript
angular.module('app', []).controller('button_ctrl', function($scope) { // ボタンで使用するデータ $scope.buttonData = [ { "text": "幸平創真", // ボタンに表示するテキスト "select": false // ボタンが選択中かどうか判別する }, { "text": "薙切えりな", "select": false }, { "text": "田所恵", "select": false }, { "text": "薙切アリス", "select": false }, { "text": "黒木場リョウ", "select": false }, { "text": "新戸緋沙子", "select": false } ]; // ボタンクリック時の処理 $scope.buttonClick = function(index) { if($scope.buttonData[index]['select']) { // 選択したボタンがtrueの場合はfalseにする $scope.buttonData[index]['select'] = false; } else { // 選択したボタンがfalseの場合はtrueにする $scope.buttonData[index]['select'] = true; } } });
選択中のボタンのclassにselectedが追加されるようにしています。
複数選択ボタンのデモページ
サンプルコード2
先ほどのJavaScriptを少し修正して、複数から1つだけ選択できるボタンを作ってみます。
JavaScript
angular.module('app', []).controller('button_ctrl', function($scope) { // ボタンで使用するデータ $scope.buttonData = [ { "text": "幸平創真", // ボタンに表示するテキスト "select": false // ボタンが選択中かどうか判別する }, { "text": "薙切えりな", "select": false }, { "text": "田所恵", "select": false }, { "text": "薙切アリス", "select": false }, { "text": "黒木場リョウ", "select": false }, { "text": "新戸緋沙子", "select": false } ]; // ボタンクリック時の処理 $scope.buttonClick = function(index) { // 一旦全てのボタンをfalseにする for (var i = 0; i < $scope.buttonData.length; i++) { $scope.buttonData[i]['select'] = false; } // 選択したボタンをtrueにする $scope.buttonData[index]['select'] = true; } });
コメントが承認されるまで時間がかかります。