在ember.js(我正在使用1.1.2)如何通過編程方式將用戶發送/重定向到特定的URL(沒有強制更改window.location.href)。我如何在不改變window.location的情況下將用戶重定向到ember.js
1
A
回答
1
灰燼,您可以通過它的名字過渡到路線或它的URL:
router.transitionTo('post', post)
router.transitionTo('/posts/1')
編輯:
我不知道的一個很好的方式從外部獲得一個參考路由器您的Ember應用程序,而不是非常氣餒的應用程序。 container .lookup('router:main')。如果你仍然可以在你的Ember應用程序中處理這個UI交互,就像在ApplicationRoute中添加一個動作(動作哈希中的一個方法)一樣簡單。
操縱window.location可能是觸發從Ember應用程序外部轉換的「最乾淨」的方式。
2
我有一個混合應用程序,我們運行一些legacy
代碼和一個Ember「應用程序」。爲了明確界限,我們創建了一個簡單的庫,我們稱之爲「LegacyBridge」。它有助於外部代碼調用進入Ember,而無需太瞭解內部。這也是一個很好的方法來限制外部代碼可以用你的Ember應用程序做什麼,因爲他們可以做很多事情,並且保持限制選項是一個好主意。
總之,這裏是你能做什麼:
var transitionTo, getContainer;
var getContainer = function() {
return App.__container__;
};
var transitionTo = function(route) {
var router = Ordering.__container__.lookup('router:main');
router.transitionTo(route);
};
this.App.LegacyBridge = {
transitionTo: transitionTo
};
然後某處非灰燼代碼:
App.LegacyBridge.transitionTo('posts/1');
這肯定是哈克。一般來說,我不會直接從容器中查找東西,但是由於它很好地封裝,這更像是一個特殊的用例,所以我可以忍受它。
順便說一句,這比改變URL更好,因爲即使您的路由器將位置策略從歷史記錄更改爲哈希值或無,或者如果rootUrl更改或瀏覽器不支持pushState,現在一切都會正常工作(Ember現在將回退到哈希)
希望這會有所幫助。
相關問題
- 1. 如何在不更改URL的情況下重定向頁面?
- 2. 如何在不使用htaccess的情況下將https重定向到http?
- 3. 如何在不更改提示的情況下將用戶重定向到新頁面
- 4. 如何在不使用window.location的情況下重定向到另一個html頁面?
- 5. 如何在不重寫URL的情況下重定向頁面?
- 6. 如何在不更改URL的情況下重定向到移動版網站?
- 7. 如何在不更改URL的情況下重定向到GET視圖?
- 8. 我可以在不重定向的情況下重寫URL嗎?
- 9. 如何在不更改輸入的URL的情況下使用.htaccess重定向?
- 10. 如何在不重定向的情況下將yandex載入到iiframe中
- 11. 如何在不更改URL的情況下重定向網頁(使用Apache VirtualHost)
- 12. 如何在不重定向cakephp 3的情況下登錄用戶?
- 13. 在不重定向的情況下更改網址
- 14. 在不重定向的情況下更改響應URL
- 15. 如何在不重定向的情況下執行href
- 16. 如何在不重定向的情況下運行PHP腳本?
- 17. 在不改變地址欄中的URL的情況下進行URL重定向
- 18. 如何在不更改URL欄的情況下在.htaccess中進行重定向
- 19. 如何在不使用把手的情況下使用Ember.js
- 20. 如何在不通過web2py中的smartgrid的情況下將用戶重定向到'視圖'
- 21. 如何在不重定向到php文件的情況下調用PHP函數?
- 22. Struts2 - 如何在不使用struts.xml的情況下重定向到一個動作?
- 23. JavaScript不重定向到URL在if-else的情況下
- 24. 在不改變方向的情況下更改SCNNode位置
- 25. 如何在不重定向的情況下使用mod_proxy設置反向代理?
- 26. 如何解決svn:E195019:在我的情況下檢測到重定向週期?
- 27. 在不重定向到新URL的情況下更改URL參數
- 28. 在不更改請求URL的情況下重定向到HTTP錯誤文檔
- 29. 在不重定向的情況下調用ruby操作/方法
- 30. 在不使用標題的情況下重定向頁面
我將如何獲得路由器的引用? – user2765977
嘗試在一個Route內部的'this.transitionTo',和/或Controller內部的this.transitionToRoute(通常在'actions'哈希中的某處)。 – sheldonbaker
即時通訊實際上是一種從控制器/路由之外完成它的方式,即作爲某種外部條件或UI交互的一部分。 – user2765977