我希望您点击EmberJS应用程序中的链接时,能够使用Ctrl和Meta键。是否可以将
transitionToRoute
在新标签页中打开?transitionToRoute
在新标签页中打开?RouterService#urlFor
https://emberjs.com/api/ember/3.0/classes/RouterService/methods/urlFor?anchor=urlFor方法,它的工作方式与transitionTo
/transitionToRoute
完全相同,但返回一个URL而不是转换到它。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
编辑于08/2020 类语法
import Controller from '@ember/controller';
import { inject as service } from '@ember/service';
import { computed } from '@ember/object';
export default class SomeController extends Controller {
@service('router') routerService;
@computed('model.id')
get url() {
let url = this.routerService.urlFor('my-route', this.model.id);
return url;
}
}
<a href={{this.url}} target='_blank' rel='noopenner noreferrer'>open</a>
。RouterService#urlFor
。我不能使用 {{link-to}}
,因为链接在 EmberJS 之外,这部分目前还没有移植到 EmberJS。是的,这很不规范 :p - Charles
window.open(newRoutePath);
。 - Jeff