我有一些功能,只要路径发生变化我就需要改变。通常你会用以下方法解决这个问题。
myProp: ( ->
# .. Do something here
).property('currentPath')
currentPath的问题在于它只检测路由更改,因此未检测到以下转换。
/blog/my-awesome-blog-post -> /blog/new-awesome-post
因为他们正在同一条路线上工作,但我需要检测何时发生此类转换,因为我需要更新我的社交媒体共享链接。
我尝试了类似下面的内容而没有运气。
App = Ember.Application.create({
conf: config,
currentPathName: '',
});
App.initializer({
name: 'Path name observer',
initialize: function(container, application) {
var router = container.lookup('router:main');
router.addObserver('url', function() {
var lastUrl = undefined;
return function() {
Ember.run.next(function() {
var url = router.get('url');
if (url !== lastUrl) {
App.set('currentPathName', url);
lastUrl = url;
}
});
};
}());
}
});
然后观察'App.currentPathName',但这会以某种方式混淆路由器,因为点击时网址突然不会改变。
有什么建议吗?
答案 0 :(得分:1)
这是我从一个友善的灵魂@ github得到的解决方案。目前尚未记录,但工作安静得很好。
Ember.Router.reopen({
doSomethingOnUrlChange: function() {
console.log(this.get('url'));
}.on('didTransition')
});