При удалении класса с помощью ngClass, как я могу быть уверен, что элемент начинается с класса? - PullRequest
0 голосов
/ 30 июня 2018

Простой пример того, что я имею в виду:

HTML:

<div ng-class="visibleClass"></div>

JS:

$scope.visibleClass = "invisible";
// Wait until the page loads
$scope.visibleClass = "";

CSS:

div.invisible {
  display: none;
}

Здесь div должен начинаться как невидимый и становиться видимым при загрузке страницы.

На самом деле происходит то, что он виден в течение одного или двух кадров, а затем становится видимым при загрузке файла js. Это особенно очевидно, если происходит переход, и элементы переходят из своего видимого состояния в невидимое состояние, когда он должен был только начаться в своем невидимом состоянии.

Как мне избежать этого поведения?

т.е. когда я удаляю класс с помощью ngClass, как я могу быть уверен, что элемент начинается с этого класса?

Ответы [ 2 ]

0 голосов
/ 30 июня 2018

Используйте директиву ng-cloak.

Из документов:

Директива ngCloak используется для предотвращения краткого отображения HTML-шаблона AngularJS браузером в исходном (некомпилированном) виде во время загрузки приложения. Используйте эту директиву, чтобы избежать нежелательного эффекта мерцания, вызванного отображением HTML-шаблона.

Директива может быть применена к элементу <body>, но предпочтительным является применение нескольких директив ngCloak к небольшим частям страницы, чтобы обеспечить прогрессивную визуализацию представления браузера.

Для получения дополнительной информации см. AngularJS ng-cloak Директива API Reference

0 голосов
/ 30 июня 2018

Это происходит из-за того, что angular требуется время для загрузки приложения, самое простое решение - поставить обычный элемент class для элемента со значением invisible.

HTML

<div ng-class="visibleClass" class="invisible"></div>
...