繁体   English   中英

在Miruken中,我可以从Controller的initialize方法返回一个Promise吗?

[英]In Miruken can I return a promise from the initialize method of a Controller?

我有一个带有初始化函数的TeamController,该函数初始化team属性。

new function() {
  mlm.package(this, {
    name:    "team",
    imports: "miruken.mvc",
    exports: "TeamController"
  });
  eval(this.imports);
  const TeamController = Controller.extend({
    $properties:{
      teams: []
    },
    initialize() {
      this.base();
      TeamFeature(this.context).getTeams().then(teams => {
         this.teams = teams;
      });      
    }
  });
  eval(this.exports);
};

如果我从初始化函数返回promise,则控制器在绑定的视图中不可用。

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

我以为我可以从初始化函数返回一个诺言,以强制加载,直到诺言得到解决?

Miruken使用完全支持诺言的IOC容器。 从容器解析组件时,如果组件具有初始化函数,则将调用初始化函数。 如果initialize函数返回promise,则从解析为所请求组件的容器中返回promise。

不幸的是,Angular和UI-Router不支持异步组件解析。 因此,UI实际上试图绑定到Promise而不是解析的控制器。 要使代码正常工作,您有2个选项。

  1. 使用UI路由器时,请勿从初始化函数返回承诺。

  2. 使用miruken的region指令和ViewRegion协议来构成您的视图。 区域尊重诺言,并且将等待加载视图,直到初始化返回的诺言得到解决为止。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM