【问题标题】:change color to the same element angular将颜色更改为相同的元素角度
【发布时间】:2016-10-08 23:17:55
【问题描述】:

您好我有以下问题,当我点击一个项目时,所有元素的颜色都会改变,但我只需要改变我点击的颜色:

<div ng-app="myApp" ng-controller="myCtrl as model">
   <button ng-click="model.addComparative()"> add
        </button>  
 <div ng-repeat="item in model.items track by $index">
   <button ng-model="model.myModel" ng-click="model.changeColor()" ng-class="{'red':model.myModel==true}">click me</button>
</div> 

 angular
    .module("myApp",[])
    .controller('myCtrl', function($scope){
        var model=this;
        model.myModel=false;
        model.items=[];
        model.newItems = '';
        model.addComparative = function(){
            model.items.push(model.newItems)
        }
        model.changeColor = function(){
            model.myModel = true;
        }
  })

和密码笔:http://codepen.io/fernandooj/pen/rrdZWE

【问题讨论】:

  • 因为您的按钮型号。你到底想做什么?

标签: angularjs angularjs-scope ng-class


【解决方案1】:

尝试使用每个项目的当前索引:

html 文件

<button ng-model="model.myModel" ng-click="model.changeColor(item)" ng-class="{'red':item.selected==true}">click me</button>

js 文件

model.addComparative = function(){
    model.items.push({}); // What you append needs to be an object.
}
model.changeColor = function(item){
    item.selected = true;
};

【讨论】:

  • 如果您正在更改该项目的属性,将整个项目传递给函数比将索引传递给函数更简单。特别是如果使用任何过滤器,因为过滤器会丢弃索引
  • 我再提一个问题,index Begin 的值有没有可能是从零开始的不同数字?
  • 好@charlietfl 我已根据您的评论进行了编辑。
【解决方案2】:

只需使用

<button ng-model="model.myModel" 
        ng-click="this.item.red=true" 
        ng-class="{'red':this.item.red}">click me</button>

ng-repeat 的 $index 可能会在不同的摘要周期之间变化(如果项目没有排序),因此它不可靠

在每次“添加”点击并使用 JS onclick 时添加一组 3 个按钮:

<div ng-app="myApp" ng-controller="myCtrl as model" ng-init="range=[0, 1, 2]">
  <button ng-click="model.addComparative()"> add </button>  
  <div ng-repeat="item in model.items track by $index+3">
    <button ng-repeat="i in range" 
            ng-model="model.myModel1" 
            onclick="this.style.background = 'red'">click me</button>
  </div>
</div>

还要注意,你所有的按钮都有相同的 ngModel,这可能不是我们想要的

【讨论】:

  • 感谢您的回答,我正在测试您的解决方案,但如果它们是更多按钮,对于每个添加,我只需要更改我单击的按钮的颜色,请看:codepen.io/fernandooj/pen/rrdZWE跨度>
猜你喜欢
  • 2011-11-23
  • 2016-04-28
  • 1970-01-01
  • 2011-12-15
  • 1970-01-01
  • 2011-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多