angular ng-repeat改变某个的背景颜色

clipboard.png
如图所示,上面的5个块,用ng-repeat循环输出,怎样实现当点击某一块(如块2)时,该块的背景颜色变为红色?其他的块的颜色不变。
谢谢指点。

阅读 10.9k
4 个回答

方法太多,ng-click,ng-class,directive实现都可以啊
这是直接写的方法,仅供参考
html:

<div>
    <span ng-class="{'selected':selected==s}" ng-repeat="s in list" ng-bind="s" ng-click="changeStatus(s)"></span>
</div>

js

$scope.list = [1,2,3,4,5];
$scope.changeStatus = function(index){
    $scope.selected = index;
}

添加点击事件。把当前循环的$index和$event传过去。然后自己通过angular jq来就处理就OK啊。

给你个现成的代码:
HTML

<div class='options'>
    <span class='option' ng-class="{'selected':s._selected}" ng-repeat="s in orderStatus" ng-bind="s.l" ng-click="clickStatus(s)"></span>
</div>

JS

$scope.clickStatus = function(prop) {
    prop._selected = !prop._selected;
};

CSS

.option{display:inline-block;border:1px solid green;padding:.25em;margin:.5em .5em 0 0;}
.option.selected{background:green;color:white;}

我正打算写个directive做这个

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进