2016-08-09 3 views
0

У меня есть TeamController с функцией инициализации, которая инициализирует свойство команды.В Miruken я могу вернуть обещание от метода инициализации контроллера?

Если я верну обещание от функции инициализации, мой контроллер недоступен в представлении для привязки.

return TeamFeature(this.context).getTeams().then(teams => { 
    this.teams = teams; 
});  

Я думал, что смогу вернуть обещание от функции инициализации, чтобы заставить нагрузку ждать, пока обещание не будет решена?

ответ

1

Miruken использует контейнер IOC, который полностью поддерживает обещания. Когда компонент разрешен из контейнера, если он имеет функцию инициализации, вызывается функция инициализации. Если функция инициализации возвращает обещание, то обещание возвращается из контейнера, который разрешает запрашиваемый компонент.

К сожалению, угловой и UI-маршрутизатор не поддерживают асинхронное разрешение компонентов. Таким образом, пользовательский интерфейс на самом деле пытается привязать к обещанию, а не к контроллеру . Чтобы сделать ваш код, у вас есть 2 варианта.

  1. Не возвращайте обещание от функции инициализации при использовании UI-Router.

  2. Используйте директиву области miruken и протокол ViewRegion, чтобы составить свое представление. Регионы уважают обещания и будут ждать загрузки представления до тех пор, пока не будут решены обещания, возвращенные из инициализации.

Смежные вопросы