ember.js - 在 EmberJS 中检测 URL 更改并获取 URL(使用 Discourse)

标签 ember.js ember-router ember-rails discourse

我正在使用基于 EmberJS 构建的 Discourse ( http://www.discourse.org/ ),并尝试观察 URL 的任何变化,例如当打开一个新主题时。我已经看到了观察 currentPath 的答案,例如这里: Detect route transitions in EmberJS 1.0.0-pre.4

App.ApplicationController = Ember.Controller.extend({

  routeChanged: function(){
    // the currentPath has changed;
  }.observes('currentPath');
});

但我正在尝试检测任何 URL 更改,而不仅仅是路径更改。正如该答案的评论中提到的:

This observer doesn't fire when transitioning from for example /pages/1 to /pages/2 because the path is staying the same: pages.page.index

我想做的是实际上检测那些不会被 observes('currentPath') 触发的上述转换。沿着这些思路,如果我在函数内部执行 this.get('currentPath'); ,我会得到类似 topic.fromParams 的内容,但我实际上对 URL 感兴趣路径例如/t/this-is-my-url-slug

简单来说,我想检测应用程序的运行时间:

/t/this-is-my-url-slug

/t/another-url-slug

并且能够捕获路径:/t/another-url-slug

抱歉,我有点像 Ember n00b,我唯一的经验是通过 Discourse。有什么想法吗?

最佳答案

您不需要任何特定于 Ember 的东西来执行此操作。根据您使用的是哈希还是推送状态,您可以使用...

$(window).on('hashchange', function(){
  console.log("Hash URL is " + location.hash.substr(1));
  // Do stuff
});

$(window).on('popstate', function(e) {
  console.log("Hash URL is " + window.location.pathname);
  // Do stuff
});

关于ember.js - 在 EmberJS 中检测 URL 更改并获取 URL(使用 Discourse),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16560738/

相关文章:

ember.js - Ember.js在父级路由中对hasMany关系的子级进行排序和过滤

javascript - Ember-Rails "Cannot read property ' extend' of undefined"

ruby-on-rails - 如何为所有 Ember.js 路由指定 URL 'prefix'?

javascript - 为客户端 MV* 框架提供无 js 回退

javascript - this.controller 在 Route 类中未定义

javascript - ember linkTo 在路由的模型 Hook 中发送空参数

javascript - 我们可以查看 emberjs 中的所有路由,也就是类似于 rake 路由在 rails 中所做的事情吗

ember.js - 使用 ember-cli,我应该 "serve"还是 "build"?

ember.js - 在Emberjs中,如何在模板文件中使用路由中定义的属性?

ember.js - 升级到 Rails 4 后,Handlebars 资源无法与 ember-rails 一起编译