即使在角度js </div>中ng-show为false,<div>也会显示一段时间

时间:2015-01-28 11:37:24

标签: javascript angularjs

有这个div:

<div ng-show="messageAvailable" class="message">
    <p ng-bind="message"></p>
</div>

messageAvailable来自$ http请求。因此,在角度js加载并且该请求发送响应并将值'false'分配给$ scope.messageAvailable之前,此div是可见的。我不希望它在一小段时间内可见。

我试过了:

<div ng-show="a=messageAvailable || false" class="message">
    <p ng-bind="message"></p>
</div>

和(在控制器的最开头):

$scope.messageAvailable = false;

也没有帮助。

2 个答案:

答案 0 :(得分:2)

您是否尝试过使用ng-if代替ng-show?

如果表达式为false,

ng-if将不会呈现HTML节点。至少使用Angular 1.3或更高版本。

<div ng-if="messageAvailable" class="message">
    <p ng-bind="message"></p>
</div>

一般来说,你应该考虑ng-if over ng-show / hide,特别是在ng-repeat内。它将大大减少摘要周期中活动手表的数量,并加快应用程序的运行。

答案 1 :(得分:0)

只需使用样式隐藏

<强> UPD     

<style>
        .h {display: none;}
        .v { display: block}
</style>

<div ng-show="messageAvailable" ng-class="{'v': messageAvailable,'h':!messageAvailable}"