Хобрук: Ваш путь к мастерству в программировании

Отложить загрузку шаблона при использовании ng-controller

Я пытаюсь отложить загрузку моего основного контроллера/шаблона (AppController) до тех пор, пока я не загружу профиль пользователя из службы.

Для всех навигационных маршрутов я использую $routeProvider с разрешением

.when('/edit/:editId', {
    templateUrl: 'editTemplate.html',
    controller: 'EditController' // this is a child controller of AppController
    resolve: {
         currentUser: ['svc.user', function(userSvc) { return userService.getUser(); }]
    }
// and so on..

Но для AppController я использую

Как я могу сделать разрешение для AppController? По сути, я хотел бы, чтобы userService.getUser() возвращал обещание завершить выполнение до того, как AppController действительно запустится, хотя я не уверен, как это сделать с помощью ng-init (или, если это возможно, я думал, что только выражения не обещания могут быть выполнены).

Спасибо за любую помощь/помощь.

26.03.2013

  • Посмотрите это видео egghead.io/video/angularjs-resolve и хорошую демонстрацию именно для вашей проблемы. здесь: github.com/johnlindquist/angular-resolve 26.03.2013
  • Спасибо, charlietfl, так что скрытое обещание «приложение» — это то, что мне нужно. Спасибо! 26.03.2013
  • нет... должно быть разрешено обещание службы. Посмотрите, как это делается в демо: github.com/johnlindquist /angular-resolve/blob/master/client/js/ 26.03.2013
  • да, но вы также можете поместить туда модуль, который я нашел. Поэтому в их случае они передают ссылку на приложение. В моем коде я использую минимизированный код с requirejs, поэтому я использую строковые литералы. Итак, у меня есть модуль app.core. Я использую 'app.core' : { // разрешаем материал }, который гарантирует, что когда он получит ядро, он также кэширует пользователя .... если я не ошибся?!? надеюсь нет 26.03.2013

Ответы:


1

Как показано в этом видео: http://egghead.io/video/angularjs-resolve/

Тебе стоит попробовать:

.when('/edit/:editId', {
  templateUrl: 'editTemplate.html',
  controller: 'EditController' // this is a child controller of AppController
  resolve: {
     currentUser: ['svc.user', function(userSvc) { return userService.getUser(); }]
     app: function ($q) {
                var defer = $q.defer();
                defer.resolve();
                return defer.promise;
     }
}
26.03.2013
  • следует отказаться от обещания userService не создавать произвольное 26.03.2013
  • Новые материалы

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

    Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
    Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

    Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
    Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

    стройный-i18следующий
    Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..