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

Javascript 将电子邮件数据绑定到mailto链接json,javascript,asp.net-mvc,json,data-binding,knockout.js,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> 这就是我所拥有的,目前的结果是:图标,然后是它旁边的电子邮件地址,当我点击电子邮件时,什么都没有发生。任何有用的提示都将不胜感激 绑定到属

在我的查看页面中,我试图放置一个用户的电子邮件地址,该地址是我使用knockout.js从数据绑定中获得的,但我很难让它正常工作

电子邮件代码

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


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

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

data-bind="text:Email"
但需要注意的是,电子邮件是可观察的,可观察的实际上是一种方法,而不是字符串。因此,如果您想开始在绑定中直接执行一些javascript,例如将“mailto:”与您的电子邮件可观察值连接起来,您需要调用可观察值以获取其值,如下所示:

data-bind="attr:{href:'mailto:' + Email()}"
self.EmailLink = ko.computed(function() {
    return 'mailto:' + self.Email();
});
<a data-bind="attr:{href:'mailto:' + EmailLink},text:Email"></a>

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

data-bind="attr:{href:'mailto:' + Email()}"
self.EmailLink = ko.computed(function() {
    return 'mailto:' + self.Email();
});
<a data-bind="attr:{href:'mailto:' + EmailLink},text:Email"></a>
然后标记可以如下所示:

data-bind="attr:{href:'mailto:' + Email()}"
self.EmailLink = ko.computed(function() {
    return 'mailto:' + self.Email();
});
<a data-bind="attr:{href:'mailto:' + EmailLink},text:Email"></a>


处理这两个选项:

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

data-bind="text:Email"
但需要注意的是,电子邮件是可观察的,可观察的实际上是一种方法,而不是字符串。因此,如果您想开始在绑定中直接执行一些javascript,例如将“mailto:”与您的电子邮件可观察值连接起来,您需要调用可观察值以获取其值,如下所示:

data-bind="attr:{href:'mailto:' + Email()}"
self.EmailLink = ko.computed(function() {
    return 'mailto:' + self.Email();
});
<a data-bind="attr:{href:'mailto:' + EmailLink},text:Email"></a>

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

data-bind="attr:{href:'mailto:' + Email()}"
self.EmailLink = ko.computed(function() {
    return 'mailto:' + self.Email();
});
<a data-bind="attr:{href:'mailto:' + EmailLink},text:Email"></a>
然后标记可以如下所示:

data-bind="attr:{href:'mailto:' + Email()}"
self.EmailLink = ko.computed(function() {
    return 'mailto:' + self.Email();
});
<a data-bind="attr:{href:'mailto:' + EmailLink},text:Email"></a>


两种选择都可以使用:

谢谢,这非常有效!我注意到,在chrome中,电子邮件没有打开任何内容,因为在控制面板中没有我设置的默认程序。谢谢,这非常有效!我注意到,在chrome中,电子邮件没有打开任何内容,因为在控制面板中没有我设置的默认程序。