在我的视图页面中,我试图放置一个使用 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"
但是需要注意的一点是,Email 是一个 observable,而 observable 实际上是一个方法,而不是一个字符串。因此,如果您想直接在绑定中开始执行一些 javascript,例如将“mailto:”与您的 Email observable 的值连接起来,您需要调用 observable 来获取它的值,如下所示:
data-bind="attr:{href:'mailto:' + Email()}"
您可能要考虑的另一种方法是创建一个计算的 observable,以便您可以使用更简单的标记。在您的视图模型中计算出的 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/