2013-06-13 32 views
22

In un video AngularJS in un punto ho visto come evitare che un'espressione sia visibile prima che il Javascript la analizzi. Ma non ricordo come sia stato fatto ...Evitare espressioni mostrate al caricamento della pagina

Ho un <div id='message'>{{$root.initializing.status}}</div> che mi piacerebbe dire "Caricamento in corso ..." prima che AngularJS abbia la possibilità di analizzarlo. Come si può fare?

risposta

37

Come gli altri citati, usa ng-cloak ma aggiungi anche il seguente al tuo CSS se è il primo a caricare nella tua pagina.

[ng\:cloak],[ng-cloak],.ng-cloak{display:none !important} 

Ciò garantirà che il modello div sia nascosto. Sotto questo modello div, aggiungere qualcosa come

Caricamento in corso ...

L'assegnazione del $ root.initializing.status con causa un valore true per ng-hide.

Ecco l'jsfiddle e il seguente è il codice:

HTML:

<div ng-controller='Ctrl'> 
    <div id='message'>{{$root.initializing.status}}</div> 
    <div ng-hide="$root.initializing.status">Loading...</div> 
</div> 

JS:

function Ctrl($timeout, $scope) { 
///simulating loading 
    $timeout(function() { 
     $scope.$root = { 
      initializing: { 
       status: 'Complete!' 
      } 
     } 
    }, 2000); 
} 
1

Usa ng-cloak direttiva per evitare il tremolio al caricamento della pagina.

0

Nel caso qualcuno trovi utile questa informazione, sto usando il seguente workaroud.

<div ng-class="{'hide', '': ctrl.pageLoaded}">...</div> 

e

.hide{display: none;} 

Uso questo per nascondere tutti i contenuti che le espressioni come angolari fino controller viene caricato, dove ho impostato this.pageLoaded = true.

2
<div id='message'><span ng-bind="$root.initializing.status"></span></div> 
Problemi correlati