在ApplicationRoute中获取currentPath

时间:2014-12-07 21:14:00

标签: javascript ember.js ember-cli

完全有可能在输入路线时我并不完全理解控制器实例化的顺序,但我试图在currentPath中获取beforeModel在我的ApplicationRoute和苦苦挣扎。奇怪的是当我记录路线时,我可以在其中看到一个名为controller的属性......

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的{​​{1}}中获得beforeModel

1 个答案:

答案 0 :(得分:0)

事实证明,带有对象的console.log返回对所述对象的引用。因此,它不是日志时对象的快照。

This little trick在记录状态时让我获得状态中的对象:

console.log($.extend({}, this));