AngularJS не оценивает сразу при использовании перезагрузки кэша

0

Я начал использовать AngularJS и хотел использовать цикл foreach, подобный этому

<div class="project" ng-hide="loading" ng-repeat="project in projects">
    <a href="projects/[[ project.slug ]]">[[ project.name ]] &raquo;</a>
    <p>{{ trans('project.description') }}: [[ project.description ]]</p>
    <hr>
</div>

Эта переменная заполняется этим кодом.

Project.get()
    .success(function(data) {
        $scope.projects = data;
        $scope.loading  = false;
    });

а также

get : function() {
        return $http.get('/api/projects');
    },

Когда я перехожу к сайту, он работает без проблем. Данные оцениваются и отображаются нормально.

Но, когда я делаю перезагрузку страницы (Command + R), я могу видеть код AngularJS на долю секунды на странице, то есть пользователь может видеть [[ project.name ]] и т.д. Вместо оцененного кода, Что может быть причиной этого? это нормальное поведение? Вначале ng-hide устанавливается в false, через $scope.loading = true; , переменная, которая установлена в значение false в методе успеха Project.get()


Я думаю, что этого должно быть достаточно кода, если вам нужно больше, скажите мне, и я предоставил вам полный код.

Теги:

1 ответ

1

Поскольку там есть запрос ajax, у вас не будет сразу занесен объект javascript, так что там появится местозаполнитель.

У вас есть несколько вариантов:

  • Используйте ng-bind, который рекомендуется использовать с помощью "{{...}}"
  • Используйте ng-cloak, который предотвращает краткий показ необработанных html-шаблонов, как показывает документация: ngCloak

  • 0
    Здравствуй. Так я бы сделал это так? <p ng-bind="[[ project.description ]]"></p> ? Это верно?
  • 1
    как сказал @Daniel alos, да, это должно работать, но без '[[' вы просто добавляете имя переменной к этому ng-bind

Ещё вопросы

Сообщество Overcoder
Наверх
Меню