如何使用绑定助手创建面向外部的 URL?

How do you create externally facing URLs using bound helpers?

我有以下内容:

<a target = "_blank" href="{{ createUrl param1 param2 param3 }}"> [ Click here ]</a>

Param1、param2 和 param3 根据其他因素而变化。这需要由绑定助手来处理。所以我有,例如:

Ember.Handlebars.registerBoundHelper 'createUrl', (param1, param2, param3) ->  
  return "https://exampleurl.net/query=" + param1?.toString() + param2?.toString() + param3?.toString()

点击它时生成的URL(样本,没有参数):https://localhost:8443/%3Cscript%20id='metamorph-53-start'%20type='text/x-placeholder'%3E%3C/script%3Ehttps://exampleurl.net/query=%3Cscript%20id='metamorph-53-end'%20type='text/x-placeholder'%3E%3C/script%3E

如何让它转至外部 url?我想生成一个未被 Ember 改变的 URL:在这种情况下,只需“https://exampleurl.net/query=

在 Ember 2.0 中你可以:

<a target = "_blank" href="{{ createUrl param1 param2 param3 }}"> [ Click here ]</a>

假设 createUrl 是定义的助手。

将应用程序的 Ember 版本升级到最新版本。

看来您使用的是旧版本 Ember,所以解决方法如下:

您可以在控制器上定义计算 属性:

export default Ember.Controller.extend({
   param1: "",
   param2: "",
   param3: "",
   externalUrl: Ember.computed('param1', 'param2', 'param3', function(){
       return "https://exampleurl.net/query=" + this.get('param1') + this.get('param2') + this.get('param3');
   });
});

然后将其绑定到您的模板中:

<a target = "_blank" {{bind-attr href=externalUrl}}"> [ Click here ]</a>

如果你觉得它必须更抽象并在不同的控制器中重用,同样可以作为一个组件来实现。