簡體   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