2
A
回答
0
我掛接到Router.didTransition
活生生的例子解決了這個:http://jsbin.com/yuzedacu/5/edit(修改的例子中here)
App.Router.reopen({
updateCurrentRoute: function(infos) {
var appController = this.container.lookup('controller:application');
if (!('currentRoute' in appController)) {
Ember.defineProperty(appController, 'currentRoute');
}
if (infos && infos.length > 0) {
// The last part of the route contains the route name
var route = infos[infos.length - 1].name;
// Collect the dynamic route parameters
var params = infos.reduce(function(a, b) {
// Parameter can be named anything
// assume there are 0 or 1 parameters
for (var name in b.params) {
if (b.params.hasOwnProperty(name)) {
// 1 parameter
return a.concat(b.params[name]);
}
}
// 0 parameters
return a;
}, []);
var path = [route].concat(params);
Ember.set(appController, 'currentRoute', path);
} else {
Ember.set(appController, 'currentRoute', []);
}
},
didTransition: function(infos) {
this.updateCurrentRoute(infos);
return this._super(infos);
}
});
1
如解釋here所示,應用程序控制器具有currentRouteName
屬性。它主要用於調試,但我認爲這是一個相當穩定的屬性,可用於生產。
編輯:如果你需要提醒所有的變化,使用hashchange event像Ember在內部。這隻會在你使用基於散列的路由時起作用。如果您使用Ember的基於歷史API的路由,您必須使用它。
0
在你app_controller您可以添加此代碼段時觸發每一路徑/路由變化
currentPathDidChange: function currentPathDidChange() {
var path = this.get('currentPath')
}.observes('currentPath')
+0
就像'currentRouteName'一樣,從'/ posts/1'改爲'/ posts/2'時不會觸發 – dwickern
相關問題
- 1. Ember.js - 防止交換路由
- 2. Ember.js - 從子路由訪問全局查詢參數
- 3. Ember.js - 路由
- 4. Ember.js路由
- 5. Angular 2路由器全局狀態變化事件
- 6. 在Ember.js中路由
- 7. Ember.js新路由api
- 8. Ember.js路由參數
- 9. Ember.js路由映射
- 10. Ember.js路由別名
- 11. 如何處理Ember.js控制器的路由器轉換?
- 12. Ember.js在路由轉換時重新創建服務對象
- 13. Ember.js:將應用程序轉換爲路由器API V2
- 14. Ember.js路由器:如何動態化狀態轉換
- 15. Ember.js轉換渲染錯誤或錯誤的路由
- 16. EmberJS路線事件轉換
- 17. Ember.js - 在控制器/路由器鏈上傳播事件
- 18. Ember.js在路由器中獲取視圖觸發事件
- 19. 如何轉換此路由器路由?
- 20. Sinatra路由轉換爲.NET路由
- 21. Ember.js路由 - 有條件地阻止路由/狀態改變
- 22. 在Ember.js中顯式路由
- 23. ember.js中的路由結構
- 24. 與ember.js路由名稱
- 25. ember.js動態路由問題
- 26. Ember.js路由器變量
- 27. 路由轉換的事件序列To calls
- 28. 事件轉換如何在Giraffe路由器中工作?
- 29. 路由事件WPF
- 30. Angular2路由事件
讓我接近但它只包括路徑的靜態部分,例如'users/fred'的'currentRouteName'是'users/user'。在動態路徑之間切換時,更改事件不會觸發。從'posts/1'轉換到'posts/2'。 – dwickern
我更新了我的答案。 – GJK