隐藏

时间:2017-02-07 16:31:12

标签: javascript html angularjs

我基本上恢复了这个question,但是对我来说有点不同,它会在页面加载时发生。

//HTML
<h1>Some very serious message here</h1>
<div ng-app="myApp" ng-controller="MyCtrl">
  <div ng-if="text !== ''">
    <label class="alert alert-danger">{{text}}</label>
  </div>
</div>

//JS
var myApp = angular.module('myApp', ["ngAnimate"]);

myApp.controller('MyCtrl', function($scope) {
  $scope.text = '';
});

请参阅JSFiddle

为什么我可以看到(即使很快)标签?如果我为ng-if更改ng-show,也会发生同样的情况。

3 个答案:

答案 0 :(得分:4)

使用ng-cloak指令:

<div ng-app="myApp" ng-controller="MyCtrl" ng-cloak>

这应该有助于在加载之前隐藏AngularJS html模板。 https://docs.angularjs.org/api/ng/directive/ngCloak

答案 1 :(得分:0)

问题是,在呈现HTML时,您的控制器尚未初始化。您可以使用ng-cloak作为darron614说,以防止HTML模板在编译之前显示。

答案 2 :(得分:0)

尝试ng-cloak

<h1>
Some very serious message here
</h1>
<div ng-app="myApp" ng-controller="MyCtrl">
  <div ng-if="text !== ''" ng-cloak>
    <label class="alert alert-danger">{{text}}</label>
  </div>
</div>