2014-09-23 61 views
4

我想訪問嵌套路由(子路由)中的全局查詢參數。Ember.js - 從子路由訪問全局查詢參數

本地化設置存儲在一個全局查詢帕拉姆的應用途徑

App.ApplicationController = Ember.Controller.extend({ 
    queryParams: ['localSelected'] 
}); 

現在我想訪問我的App.IndexRoute該值

App.TranslateRoute = Ember.Route.extend({ 
    model: function(params){ 
     params.localSelected **NOT AVAILABLE** 
    } 
}); 

回答

3

終於找到每次查詢參數更新時通過設置一個全局變量的解決方案。

在應用程序控制器

App.ApplicationController = Ember.Controller.extend({ 
    queryParams: ['localSelected'], 
    localSelectedOberver: function(){ 
     App.set('localSelected', this.get('localSelected')); 
    }.observes('localSelected').on('init'), 
    localSelected: "en" 
}); 

而且因爲控制器初始化來晚了,你還需要:

App.ApplicationRoute = Ember.Route.extend({ 
     model: function(params){ 
      App.set('localSelected', params.localSelected) 
     } 
    )} 
}) 

然後,每當你需要知道的本地化查詢參數值,你可以去:

App.get('localSelected'); 
+0

當我寫這篇文章的時候,我並沒有使用Ember Injection,可能是一個更加強烈的解決方案問題。 – Paul 2015-04-08 02:31:57