完全有可能在输入路线时我并不完全理解控制器实例化的顺序,但我试图在currentPath
中获取beforeModel
在我的ApplicationRoute和苦苦挣扎。奇怪的是当我记录路线时,我可以在其中看到一个名为controller
的属性......
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
的{{1}}中获得beforeModel
?
答案 0 :(得分:0)
事实证明,带有对象的console.log
返回对所述对象的引用。因此,它不是日志时对象的快照。
This little trick在记录状态时让我获得状态中的对象:
console.log($.extend({}, this));