如何切换按钮?

时间:2016-02-26 10:40:45

标签: javascript angularjs angular

我在按下按钮时尝试按下数组中的数据,再次按下按钮时将其从数组中删除(并更改按钮类)。

<button 
    *ngFor="#color of colors"
      [class.selected]="color === selectedColors"
      (click)="onPress(color)">
      {{color.name}}
</button>

我在课堂上放了两种方法 - onPress&amp; hasColor

onPress(color: Color) {
this.selectedColors = color;
  // ckecking color in array
 if (this.hasColor(this.colorsArray,this.selectedColors.id)) {  
        //need to splice a color from array and change background color to default (to blue color)    
 } else {       
    // if not in colorsArray then push and change class to .selected
   this.colorsArray.push(this.selectedColors.id);
                         }
            } 

 hasColor(arrayC,id) {
      arrayC.forEach(function(item) {
    if (item === id) {
          return true;
        }
          return false;            
      });
    } 

Plunker

我该怎么办? hasColor方法返回true或false但在onPress方法中永远不会返回

1 个答案:

答案 0 :(得分:2)

  

hasColor方法返回true或false

不,它没有。

您传递给forEach的匿名函数会返回truefalse(对循环中的每个项都会这样做。)

hasColor函数根本没有自己的return语句。

如果你想在你的for循环中查看任何项是否匹配,那么你需要使用一个变量来跟踪你是否有任何匹配,然后在循环之后返回该变量结束。

hasColor(arrayC, id) {
    var match = false;
    arrayC.forEach(function(item) {
        if (item === id) {
            match = true;
        }
    });
    return match;
}