在Ember JS中获取当前URL

5

我想要在EmberJS中获取当前的URL,但是我无法实现。我正在尝试以下方法:

App.Route = Ember.Route.extend(Em.I18n.TranslateableProperties, {
    actions: {
        didTransition: function (transition) {
            this._super();
            console.log(window.location.href);
            console.log(this.get('router.url'));
        }
     }
});

我曾经使用 didTransition,因为我需要在所有元素加载完毕时知道当前URL。例如:

如果我在主页(/home)并导航到联系页面(/contact-page),我想知道URL '/contact-page'。

如果我使用 window.location.href,虽然可以工作,但不总是有效。我认为 didTransition 是在其他所有事情都完成后调用的,但这并不总是正确的。

为什么?

提前感谢。


有没有任何日志记录?还是你得到了空的日志?我刚刚在didTransition中尝试了一下,对我来说运行得很好。 - Mårten
你为什么想知道URL?你打算用它做什么? - user663031
嗨!我需要知道URL,因为我需要与本地对象进行比较。 - Agustin Herrera
1个回答

5

didTransition方法实际上并没有像你的代码所示的那样有一个transition参数。

相反,您应该使用afterModel方法,如下所示:

App.Route = Ember.Route.extend(Em.I18n.TranslateableProperties, {
    afterModel: function(resolvedModel, transition) {
        var _this = this;  // keep a reference for usage in then()
        transition.then(function() {
            console.log(_this.get('router.url'));
        )};
    }
});

参考文献:


我想使用这个建议,但是 afterModel 不会在每次转换后触发。还有其他获取此信息的方法吗? - lizlux

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接