-1

这是描述我的问题
HTML的虚拟编码

<div ng-class="{'test': isAllowed }" id='example1'>Example 1</div>
<div ng-class="{'test': isAllowed }" id='example2'>Example 2</div>

$scope.isAllowed被完全评估,#example1受类test影响,但有时#example2受该类影响需要时间,尽管它们都共享同一个类。我认为问题出在ng-class上。我可以使用ng-if
解决我的问题

<div class="test" ng-if="isAllowed" id='example1'>Example 1</div>
<div ng-if="!isAllowed" id='example1'>Example 1</div>
<div class="test" ng-if="isAllowed" id='example2'>Example 2</div>
<div ng-if="!isAllowed" id='example2'>Example 2</div>

如您所见,它看起来是多余的,我不想这样处理问题

4

1 回答 1

0

isAllowed 是如何设置的?如果它是在 setTimeout、setInterval 或角度生命周期之外的其他内容中设置的,您可能需要包含一个

scope.$apply()

(如果它是一个指令),或者

$scope.$apply()

(如果它在控制器中)在您设置 isActive 之后。

$scope.isActive = true;
$scope.$apply();

如果这两个都不起作用,或者如果您收到“已经在摘要循环中”错误,则使用 $evalAsync 进行包装

$scope.$evalAsync(function(){
    $scope.isActive = true;
});

查看https://jsfiddle.net/cyx4z03m/1/您会看到除了每 3 秒更新一次之外,css 没有更新。打开您的 DevTools 并查看控制台日志。该值正在被切换,但在 Angular 知道它准备好更新之前,您看不到真正的结果。我想知道你的问题是否相关。

于 2019-12-30T15:58:15.837 回答