b_e_m
@b_e_m
Front-End Dev

Как в TemplateProvider достать данные из resolve?

Суть пробелмы в следующем:
нужно достать объект из resolve, и проверить его роль, если роль "х" отдавать темплейт "х" если "у" - в свою очередь темплейт "у"..
State получает resolve только после загрузки темплейта. Какие есть варианты решения?
Буду благодарен
.state('person', {
      abstract: true,
      url: "/id{id}",
      views: {
        'header': {
          templateUrl: "modules/authorization/header_view.html",
          controller: "authorizationCtrl",
          resolve: {
            authorizationService: 'authorizationService'
          }
        },
        'content': {
          templateProvider: ['$stateParams', 'personService', function($stateParams, personService) {
            return 'modules/person/lawyer_view.html';
          }],
          controller: "personCtrl",
          resolve: {
            personService: 'personService',
            profile: ['$stateParams', 'personService', function($stateParams, personService) {
              var userId = $stateParams.id;
              console.log('second');
              return personService.getUser(userId);
            }]
          }
        }
      }
    })
  • Вопрос задан
  • 235 просмотров
Пригласить эксперта
Ответы на вопрос 1
AMar4enko
@AMar4enko
Последние версии ui-router поддерживают locals из resolve-секции в templateProvider.
Проверьте вашу версию и попробуйте сделать
templateProvider: ['$stateParams', 'profile', function($stateParams, profile) {
            return 'modules/person/lawyer_view.html';
          }],

Насколько я помню, templateProvider возвращает непосредственно данные шаблона, а не url (или promise, который вернет данные). Можете использовать $templateRequest, чтобы вытащить данные по url шаблона, у него внутри $templateCache используется.
P.S. https://github.com/angular-ui/ui-router/releases/t...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы