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

时间:2013-04-03 03:12:19

标签: javascript asp.net-mvc json data-binding knockout.js

在我的视图页面中,我尝试使用knockout.js从数据绑定中获取用户的电子邮件地址,但我无法使其正常工作。

电子邮件代码

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

这就是我所拥有的,当前的结果是:图标然后是它旁边的电子邮件地址,当我点击电子邮件时没有任何反应。任何有用的提示表示赞赏。

1 个答案:

答案 0 :(得分:3)

在对属性进行绑定时,通常通过给出属性名称进行绑定,就像使用文本绑定一样:

data-bind="text:Email"

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

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

您可能需要考虑的另一种方法是创建一个计算的observable,以便您可以使用更简单的标记。 viewmodel中的计算observable可能如下所示:

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

然后标记看起来像这样:

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

使用这两个选项:http://jsfiddle.net/tlarson/tG7mg/