提问者:小点点

将电子邮件数据绑定到mailto链接json


在我的视图页面中,我试图放置一个用户的电子邮件地址,这个地址是我通过使用knockout.js进行数据绑定获得的,但是我很难让它正常工作。

电子邮件代码

<a class="icon-envelope icon-white" data-bind="attr:{href:'mailto:' + Email},text:Email"></a>

这就是我所拥有的,当前的结果是:图标,然后是它旁边的电子邮件地址,当我点击电子邮件时,什么也没有发生。如有任何有用的提示,我们将不胜感激。


共1个答案

匿名用户

绑定属性时,通常通过指定属性名进行绑定,就像使用文本绑定一样:

data-bind="text:Email"

但有一点需要注意的是,电子邮件是一个可观察的,而可观察的实际上是一个方法,而不是一个字符串。因此,如果您想要在绑定中直接执行一些javascript,例如将“mailto:”与电子邮件observable的值连接起来,则需要调用observable来获取它的值,如下所示:

data-bind="attr:{href:'mailto:' + Email()}"

您可能要考虑的另一种方法是创建一个计算的可观察值,这样您就可以有更简单的标记。viewmodel中的计算可观察值可能如下所示:

self.EmailLink = ko.computed(function() {
    return 'mailto:' + self.Email();
});

则标记可能如下所示:

<a data-bind="attr:{href:'mailto:' + EmailLink},text:Email"></a>

同时使用两种选项:http://jsfidle.net/tlarson/TG7MG/

相关问题