2014-12-07 2 views
1

Вполне возможно, что я не совсем понимаю порядок создания экземпляров контроллеров при вводе маршрута, но я пытаюсь получить currentPath в beforeModel в моей ApplicationRoute и борется. Странно то, когда я вхожу маршрут, я могу видеть свойство controller в нем ...Получить currentPath в ApplicationRoute

enter image description here

beforeModel: function(transition) { 

    console.log(this); 
    console.log(this.controller); // undefined 
    console.log(this.get('controller')); // undefined 

    // this too 
    console.log(this.controllerFor('application')); 
    console.log(this.controllerFor('application').currentPath); // undefined 
    console.log(this.controllerFor("application").get("currentPath")); // undefined 

}, 

Но this.controller не определено. Как вы можете видеть в выводе журнала, currentPath действительно установлен в этом свойстве, и это то, что я хочу!

Я отметил, что controller явно не определен до тех пор, пока маршрутизатор не создаст экземпляр контроллера. Таким образом, documentation несколько ясны в том, что в willTransition, this.controller-.

Свойство контроллера, похоже, определено в setup, поэтому я очень смущен тем, как я могу видеть его в beforeModel. Как я могу получить currentPath в beforeModel в ApplicationRoute?

ответ

0

Оказывается, что console.log с объектом возвращает ссылку на указанный объект. Таким образом, это не снимок объекта во время журнала.

This little trick получил меня объект в состоянии, когда вошли:

console.log($.extend({}, this)); 
Смежные вопросы