2014-09-23 79 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