2016-02-19 59 views
0

我想重置我的所有按钮的背景颜色(bgNeutral),但谁是征求唯一一个(谁拥有以切换“bgSelected”):获取单击按钮上的Ng点击的来源?

<button ng-class="button1" ng-click="addActifOnMe($1)" class="bgSelected"></button> 
<button ng-class="button2" ng-click="addActifOnMe($2)" class="bgNeutral"></button> 
<button ng-class="button3" ng-click="addActifOnMe($3)" class="bgNeutral"></button> 

这是我的.js文件:

app.controller("angularController", function ($scope) { 
    $scope.button1 = "bgSelected"; 

    $scope.addActifOnMe = function (1) { 
     $scope.button2 = "bgNeutral"; 
     $scope.button3 = "bgNeutral"; 
     $scope.button1 = "bgSelected"; 
    }; 

    $scope.addActifOnMe = function (2) { 
     $scope.button1 = "bgNeutral"; 
     $scope.button3 = "bgNeutral"; 
     $scope.button2 = "bgSelected"; 
    }; 

    $scope.addActifOnMe = function (3) { 
     $scope.button1 = "bgNeutral"; 
     $scope.button2 = "bgNeutral"; 
     $scope.button3 = "bgSelected"; 
    }; 
}); 

CSS可以是类似的东西:

.bgSelected{ 
background-color: red; 
} 

.bgNeutral{ 
background-color: blue; 
} 

但实际上这一点,没有工作...我想在我的函数中使用ngClick与$事件。有人有更好的方法来做到这一点?

谢谢!最好的祝福。

回答

0

您可以通过在控制器中使用变量selectedButton来执行此操作,以跟踪选择哪个按钮。

<button class="neutral" ng-class="{selected: todoList.selectedButton === 1}" ng-click="todoList.select(1)">button 1</button> 
<button class="neutral" ng-class="{selected: todoList.selectedButton === 2}" ng-click="todoList.select(2)">button 2</button> 
<button class="neutral" ng-class="{selected: todoList.selectedButton === 3}" ng-click="todoList.select(3)">button 3</button> 

控制器:

angular.module('todoApp', []) 
    .controller('TodoListController', function() { 
     var todoList = this; 
     todoList.selectedButton = 1; 

     todoList.select = function(buttonNumber) { 
      todoList.selectedButton = buttonNumber; 
     } 
    }); 

Here's a plunker to demonstrate this working

+0

感谢这个超完整的答案!它的工作完美。 – Gouigoui