Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 如何制作';a';使用mailto href和bindAttr标记属性?_Ember.js_Handlebars.js - Fatal编程技术网

Ember.js 如何制作';a';使用mailto href和bindAttr标记属性?

Ember.js 如何制作';a';使用mailto href和bindAttr标记属性?,ember.js,handlebars.js,Ember.js,Handlebars.js,我有一个模型,上面有一个属性“contact_email”。我想用mailto:href创建一个链接 我尝试过做一些稍微明显的,但当然这是没有mailto:位的 如何将mailto:与属性contact\u email结合起来?目前,唯一可行的方法是使用计算属性(如您在评论中所述) 如果您发现自己经常这样做,那么有一件事可能会让您更容易接受,那就是创建一个计算属性“宏”: 然后您可以在控制器中执行此操作: var mailto = App.computed.mailto; App.UserCo

我有一个模型,上面有一个属性“contact_email”。我想用mailto:href创建一个链接

我尝试过做一些稍微明显的
,但当然这是没有mailto:位的


如何将mailto:与属性contact\u email结合起来?

目前,唯一可行的方法是使用计算属性(如您在评论中所述)

如果您发现自己经常这样做,那么有一件事可能会让您更容易接受,那就是创建一个计算属性“宏”:

然后您可以在控制器中执行此操作:

var mailto = App.computed.mailto;

App.UserController = Ember.ObjectController.extend({
  mailtoContactEmail: mailto('contactEmail')
});

对于所有这样的用例,使用把手助手可以是问题的通用解决方案

检查小提琴


注册一个简单的有界Ember Handlebar辅助对象(
Em.handlebar.registerBoundHelper

这两个值(电子邮件地址以及可选的备用标签)都绑定到模型,并且在模型更改时都会更改

创建了一个JSFIDLE来演示不断变化的模型:

在的最新版本中,您可以这样做:

simple mailto link:
{{mailTo emailAddress}} 
(output: <a href="mailto:foobar@example.com">foobar@example.com</a>)

mailto link with alternate label
{{mailTo emailAddress username}}
(output: <a href="mailto:foobar@example.com">foobar</a>)
在你看来:

export default Ember.View.extend({
    layoutName: 'layouts/legal',
    templateName: 'views/legal/tou',
    tagName: 'main',
    classNames: 'view-legal-wrapper',
    varViewTitle: 'Terms and Conditions',
    varCompanySupportEmail: 'test@gmail.com'
});
在车把模板中:

<a href="mailto:{{unbound view.varCompanySupportEmail}}?subject=Support%20Request">{{view.varCompanySupportEmail}}</a>

我只是用徽章做到了这一点,如下所示:

a href="mailto:{{unbound email}}" Email
这意味着您应该能够执行以下操作:

<a href="mailto:{{unbound email}}">Email</a>

尝试
concat
帮助程序:


我可以做一些不雅观的事情,只需要拥有一个名为mailto\u contact\u email的属性,该属性将mailto:with
this.get('contact\u email')
。似乎车把必须有一种区分的方式,我就是找不到。如果你直接从一个型号加载电子邮件地址,并在你的应用程序中使用旧的车把,你可以在你的视图中使用
。但是,如果您需要在视图中动态绑定/更新,请使用与我提供的相同语法查看支持此功能的新HTMLBars功能。使用Handlebar帮助程序如何?您不能将Handlebar帮助程序放在bindAttr中的值中,因此这不起作用。我已经编写了Handlebar帮助程序。当前我无法处理helpers内部的值绑定。有什么好办法吗?看看这个,我不怀疑计算属性会工作,但我认为控制器不应该对这样的事情负责。mailto链接是纯粹的表示。这种逻辑应该在视图中处理,一年后是否仍然如此?我自己刚开始玩灰烬,这就是我最后要做的,但我同意s.meijer的观点。
export default Ember.View.extend({
    layoutName: 'layouts/legal',
    templateName: 'views/legal/tou',
    tagName: 'main',
    classNames: 'view-legal-wrapper',
    varViewTitle: 'Terms and Conditions',
    varCompanySupportEmail: 'test@gmail.com'
});
<a href="mailto:{{unbound view.varCompanySupportEmail}}?subject=Support%20Request">{{view.varCompanySupportEmail}}</a>
DEBUG: ------------------------------- 
DEBUG: Ember      : 1.5.1 
DEBUG: Ember Data : 1.0.0-beta.7+canary.b45e23ba 
DEBUG: Handlebars : 1.3.0 
DEBUG: jQuery     : 2.1.1 
DEBUG: ------------------------------- 
a href="mailto:{{unbound email}}" Email
<a href="mailto:{{unbound email}}">Email</a>