Подтвердить что ты не робот

Различия между ng-bind и ng-cloak в angularjs

В этом вопросе почему ng-bind лучше, чем {{}} в angular? Я понял различия между {{}} и ng-bind. С другой стороны, я могу использовать ng-cloak вместо ng-bind.

Теперь мой вопрос в том, каковы различия между ng-bind и ng-cloak?

4b9b3361

Ответ 1

Они выполняют ту же работу относительно.

Взглянув на api docs, вы можете найти то, что они точно.

ngCloak

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

Директива ng-cloak - это встроенная директива Angular, которая скрывает все элементы на странице, которые содержат директиву.

<div ng-cloak>
<h1>Hello {{ foo }}</h1>
</div>

После завершения загрузки браузера и этапа компиляции шаблона рендеринг, Angular удалит атрибут элемента ngCloak и элемент станет видимым.

ngBind

Атрибут ngBind сообщает Angular заменить текстовое содержимое указанного HTML-элемента на значение данного выражения и обновить текстовый контент при изменении значения этого выражения.

Использование ng-bind вместо {{ }} приведет к тому, что unrendered {{ }} отобразит вместо пустых элементов, которые будут отображаться. Пример сверху можно переписать следующим образом, что предотвратит страница от мерцания с помощью {{ }}:

<div>
<h1>Hello <span ng-bind="foo"></span></h1>
</div>

Ответ 2

Вы можете найти такие вещи в Angular Api Docs.

ng-cloak - это просто правило css, которое устанавливает стиль display: none !important, поэтому ваше выражение {{}} не отображается до замены фактическими данными. https://docs.angularjs.org/api/ng/directive/ngCloak

Пока ng-bind является самим выражением.

Ответ 3

Когда вы используете ng-bind, браузер игнорирует это, а после загрузки angular он связывает значение в представлении.

Если вы используете ng-cloak, {{}} по-прежнему будет отображаться на короткое время, но как только angular будет загружен и проанализирован, он будет пропускать {{}} до компиляции.

Ответ 4

Из документации

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

https://docs.angularjs.org/api/ng/directive/ngCloak

Ответ 5

В практическом смысле, если вы передадите свою модель в виде с сервера, то ng-cloak в порядке - когда страница отобразится, данные вашего вида будут заполнены. Однако, если вы используете более удобный для мобильных устройств подход к загрузке вашего html и загрузке ваших данных и, возможно, локализации с помощью дополнительного вызова, то ng-model предотвращает {{}} мерцание между загрузкой страницы и получением ваших данных. Тем не менее, я нахожу ng-модель недостаточной, поскольку ее нельзя использовать повсеместно, поэтому я обычно помещаю ng-show в контейнер, который предоставляет представление после того, как данные были извлечены, и установлен флаг.