2016-06-05 5 views
0

Ich habe eine Funktion, die eine Eigenschaft in einem Objekt auf false setzt, wenn es wahr und wahr ist, wenn es falsch ist. Doch jedes Mal, wenn die Funktion ausgeführt wird, wird das Objekt nicht beeinflusst.Wie ändere ich die Eigenschaft eines Objekts in AngularJS

$scope.menuButtons = [{header: "beaded", isActive: false}, 
         {header: "laced", isActive: false} 
        ] 

$scope.activeButton = function(isActive) { 
    isActive == true ? isActive = false : isActive = true; 
}; 

Hier ist der HTML

<div ng-repeat="b in menuButtons"> 

<div ng-click="activeButton(b.isActive)" class="shop-navbar-button">{{b.header}}</div> 

</div> 

ich den isActive Wert bin zu sehen, ob der Button aktiv ist, so kann ich eine andere Klasse. Aus irgendeinem Grund wird der isActive-Wert im $ scope nicht beeinflusst.

Antwort

4

Pass in b anstelle von b.isActive. Der boolesche Wert wird nur als Wert übergeben, sodass die Neuzuweisung des Werts keinen Einfluss auf b.isActive hat.

+0

Sehr geschätzt! –

2

Ich denke, Sie dies ändern können:

<div ng-click="activeButton(b.isActive)" class="shop-navbar-button">{{b.header}}</div> 

dazu:

<div ng-click="b.isActive=!b.isActive" class="shop-navbar-button">{{b.header}}</div> 

Sie werden nicht die auxiliar Funktion benötigen. Es ist sauberer und eckiger.

+0

das funktionierte auch dank –

Verwandte Themen