Ember.js 如何制作';a';使用mailto href和bindAttr标记属性?
我有一个模型,上面有一个属性“contact_email”。我想用mailto:href创建一个链接 我尝试过做一些稍微明显的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
,但当然这是没有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:withthis.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>