2014-09-23 3 views
4

Я хотел бы получить доступ к глобальному параметру запроса во вложенном маршруте (дочерний маршрут).Ember.js - получить доступ к глобальному параметру запроса из дочернего маршрута

Настройка локализации хранится в Global Query Param на Application Route:

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

Теперь я хотел бы получить доступ к этому значение в моей App.IndexRoute

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

ответ

3

Наконец нашел решение путем установки глобальной переменной каждый раз, когда запрос обновляет параметры.

В контроллере Application

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

Смежные вопросы