Emberjs transitionToRoute到新标签

时间:2018-03-08 11:09:30

标签: javascript ember.js browser-tab

当用户点击EmberJS应用程序内的链接时,我想使Ctrl和Meta Key成为可能。

是否可以将$ openssl version打开到新标签中?

2 个答案:

答案 0 :(得分:2)

好问题......如果您使用{{link-to}},那么它将在没有任何“黑客”的情况下正常工作......

但如果您必须在点击操作中执行此操作,则无法使用transitionToRoute。

您可以检查ctrl / meta键是否已关闭(请参阅JavaScript: Check if CTRL button was pressed

然后你将不得不使用window.open(routeUrl)。

然后,您可以使用router#generate生成routeUrl,请参阅How to generate url for a route in Ember.js

PS:我还没有尝试过任何一种只是猜测但它已经感觉很脏并闻起来很糟糕。如果可能,我会建议{{link-to}}。

PPS:我很想知道你是如何解决的:)

答案 1 :(得分:1)

如果使用Ember 2.16或更高版本,您可以使用RouterService#urlFor https://emberjs.com/api/ember/3.0/classes/RouterService/methods/urlFor?anchor=urlFor方法,其工作方式与transitionTo / transitionToRoute完全相同,但会返回网址而不是转移到网址。

import Controller from '@ember/controller';
import { inject as service } from '@ember/service';

export default Controller.extend({
  routerService: service('router'),

  actions: {
    openSomething(id) {
      let routerService = this.get('routerService');
      let url = routerService.urlFor('my-route', id);

      window.open(url);
    }
  }
});

对于Ember 2.16以下的用户,您可以使用polyfill:https://github.com/rwjblue/ember-router-service-polyfill