如何在变量发生变化时更新角度ng-class?

时间:2016-11-13 15:41:51

标签: angularjs ng-class

我希望我的ng-class在控制器中的变量发生变化时更新。由于某种原因,它只在页面加载时触发,而变量更改时,ng-class不会更新以反映这一点。

以下是触发变量更改的代码:

<a class="cs-mobile-menu__close-icon" ng-click="switchMobileMenu('right')">
</a>

以下是我想要根据变量更改的代码:

<div class="right-menu__user"
        ng-class="{
                  'animate': true,
                  'animate--leave': !isRightMenuOpen}">
  {{user.firstName}} {{user.lastName}}
</div>

以下是来自控制器的相应代码:

$rootScope.isLeftMenuOpen = false;
$rootScope.isRightMenuOpen = false;

$scope.switchMobileMenu = function(direction) {
       if (direction === 'left') {
           $scope.isLeftMenuOpen = !($scope.isLeftMenuOpen);
       } else {
           $scope.isRightMenuOpen = !($scope.isRightMenuOpen);
       }
};

似乎ng-class仅在初始ng-click上设置。我相信我需要在$scope.apply()函数中包含上述函数,以便ng-class监视更改并将其应用为ng-click切换变量。我是在正确的轨道上吗?如果是这样,我该怎么做?

1 个答案:

答案 0 :(得分:1)

你不需要$ scope。$ apply。工作示例:https://jsbin.com/fogasiniku/edit?html,js,output

你真的在CSS类名中有双破折号吗?