javascript - 我如何在不更改 window.location 的情况下在 ember.js 中重定向用户

标签 javascript ember.js

在 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/

相关文章:

javascript - 在 RegExp 字符串中转义反斜杠

ember.js - 创建图表时,我可以在 Chart.js 中使用渐变而不访问图表上下文吗?

javascript - Ember 数据 : findRecord is undefined.(也是 peekRecord 或 peekAll)

node.js - 我使用 ember-cli-bootstrap-sass 是否错误?

ember.js - 在 ember-app-kit 中使用 testem 运行测试时 api-stubs 失败

javascript - jasmine-jquery 与 selenium 驱动程序(如 Nightwatch.js) - 何时选择其中每一个?

javascript - jQuery 生成短的唯一编号

javascript - 有没有办法在 Shopify Liquid 模板中使用 Cookie?

javascript - 使用 Phonegap 进行 Dropbox 身份验证

javascript - 如何使用 javascript 获取选定的文本 id 并替换文本并保持标签完整?