2012-11-17 6 views
17

Ich habe ein div-Element, das ich nur zeigen möchte, wenn meine Liste der Elemente leer ist. Also habe ich in den folgenden (in haml):ng-cover und ng-show blinkt das verdeckte Element auf dem Bildschirm

#no-items.ng-cloak{ :ng_show => "items.length <= 0", :ng_cloak => true } 

Aber auch nachdem ich getan habe, dass das Element nach wie vor auf dem Bildschirm blinkt. Dann sah ich Angularjs - ng-cloak/ng-show elements blink, aber selbst nach dem Hinzufügen der folgenden in meinem CSS, das Blinken immer noch auftritt.

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

Irgendwelche Ideen, was ich falsch mache?

+0

Es gibt keine Magie zu Mantel ng. Ich schätze, Sie haben etwas Falsches in Ihrem Hamel. Ich benutze es nicht, also kann ich dir nicht sagen was. Debuggen Sie einfach in Ihrem Browser. Laden Sie die Seite ohne eckige App, die ausgeführt wird. Ist der HTML-Code wie erwartet? Ist es versteckt? – 34m0

Antwort

10

Stellen Sie sicher, dass das oben abgebildete ng-cover-CSS am Anfang Ihrer Seite geladen wird.

Dies sollte alles, was Sie tun müssen, ist:

<div ng-hide="items.length" ng-cloak>no items</div> 

Probe .

34

Sie können ng-hide in die Klasse einfügen, ohne zu beeinflussen, wie das JS nach dem Laden funktioniert. Es ist jedoch nützlich, es dort zu platzieren, so dass CSS es berücksichtigt, während es darauf wartet, dass das JS geladen wird.

<div data-ng-controller="RoomsController"> 
<div ng-cloak class="ng-cloak ng-hide" data-ng-if="visible" > 
    Some text 
</div>   
</div> 
1

Keine der Lösungen funktionierte für mich. Die einzige Lösung, die ich gefunden, ist die folgende:

In jedem Controller fügen:

$scope.$on('$viewContentLoaded', function() { 
      $scope.completed = true; 
});    

und in den HTML-Code jeder Ansicht, fügen ng- if = "abgeschlossen" an das oberste Element. Zum Beispiel:

<div ng-if="completed"> 

Hinweis: das Problem zu firefox und ui-Router beschränkt ist. Dort wird ng-cover ignoriert und es gibt keine CSS-Problemumgehung. Die einzige Lösung, die für mich funktionierte, ist diejenige, die ich oben gegeben habe.

Verwandte Themen