在 ember.js 中(我使用的是 1.1.2)如何以编程方式将用户“发送/重定向”到特定的 url(无需强制更改 window.location.href)。
最佳答案
我有一个混合应用程序,我们在其中运行一些 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
};
然后在非 Ember 代码的某处:
App.LegacyBridge.transitionTo('posts/1');
这当然是 hacky。一般来说,我不会直接从容器中查找内容,但由于它封装得很好,而且这更像是一个特殊的用例,我可以接受它。
顺便说一句,这比更改 URL 更好,因为即使您的路由器将定位策略从 history 更改为 hash 或无,如果 rootUrl 更改或浏览器不支持 pushState(Ember 现在将回退到 hash),一切都会正常进行
希望这对您有所帮助。
关于javascript - 我如何在不更改 window.location 的情况下在 ember.js 中重定向用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22105491/