2016-07-26 96 views
1

後,我想獲得本地化的模板,如:加載UI模板路由器解決的承諾

  • '/templates/en/main/index'
  • '/templates/fr/main/index'

所以每次我有一個templateUrl,我把它包在一個函數,它依賴於一個帶有語言環境的全局變量,如下所示:

templateUrl: function(){ return localizePath('/templates/main/index'); } 
// returns '/templates/locale/main/index' depending on he locale 

我必須通過ajax調用來檢索語言環境,所以我顯然需要暫停狀態激活。我嘗試以下,但它不阻止路由器嘗試獲取模板:

​​

路由器隨後試圖在以下路徑來獲取模板:'/templates/undefined/main/index'

如何在嘗試獲取模板之前讓ui路由器等待?

+1

這不會幫助你解決問題的模板。但我建議,不要試圖爲每個位置設置一個模板,而是使用不同語言的字典並根據所選語言環境加載不同的字典,請查看https://github.com/angular-translate/angular -translate –

回答

3

templateUrl函數不能以異步的方式工作,但您可以使用templateProvider函數執行此操作,該函數返回已解析的模板並通過resolve屬性等待此調用。如果您只需要這一次,最好的方法是可能在根狀態中定義您的決心並通過服務緩存結果值。

看到這個答案,詳細瞭解你如何能實現它:ui-router: async data in templateUrl function

+0

非常感謝你:) – apneadiving