我有一个函数将对象中的属性设置为false(如果为true),如果为false则为true。然而,每次函数运行时,对象都不会受到影响。
$scope.menuButtons = [{header: "beaded", isActive: false},
{header: "laced", isActive: false}
]
$scope.activeButton = function(isActive) {
isActive == true ? isActive = false : isActive = true;
};
这是HTML
<div ng-repeat="b in menuButtons">
<div ng-click="activeButton(b.isActive)" class="shop-navbar-button">{{b.header}}</div>
</div>
我正在使用isActive值来查看该按钮是否处于活动状态,因此我可以使用其他类。由于某种原因,$ scope中的isActive值不会受到影响。
答案 0 :(得分:4)
传递b
代替b.isActive
。布尔值只是按值传递,因此重新赋值不会对b.isActive
产生影响。
答案 1 :(得分:2)
我认为你可以改变这一点:
<div ng-click="activeButton(b.isActive)" class="shop-navbar-button">{{b.header}}</div>
到此:
<div ng-click="b.isActive=!b.isActive" class="shop-navbar-button">{{b.header}}</div>
你不需要辅助功能。它更清洁,更有棱角。