我尝试使用Knockout在显示模板中显示带有链接和mailto的表格。我对knock out还是很新,所以提前道歉!
这是我的显示模板原始代码:
<script type="text/template" id="customerSearchDisplayTemplate"></script>
目前我做到的是这样的,不包括mailto和链接:
<script type="text/template" id="customerSearchDisplayTemplate"></script>
我尝试使用Knockout在显示模板中显示带有链接和mailto的表格。我对knock out还是很新,所以提前道歉!
这是我的显示模板原始代码:
<script type="text/template" id="customerSearchDisplayTemplate"></script>
目前我做到的是这样的,不包括mailto和链接:
<script type="text/template" id="customerSearchDisplayTemplate"></script>
可以在 data-bind
属性中使用 attr
和 text
属性,像这样:
<script type="text/template" id="customerSearchDisplayTemplate">
<tr>
<td class = "hiddenId"><span data-bind="text: customerSearchID"/></td>
<td><span data-bind="text: fullName" /></td>
<td>
<span>
<a data-bind="text: primaryEmail,
attr: {href: 'mailto:'+primaryEmail()}" />
<span/>
</td>
<td>
<span>
<a data-bind="text: secondaryEmail,
attr: {href: 'mailto:'+secondaryEmail()}" />
<span/>
</td>
<td><span data-bind="text: homePhone" /></td>
<td><span data-bind="text: workPhone" /></td>
<td><span data-bind="text: mobilePhone" /></td>
<td><span data-bind="text: lastLogonDate" /></td>
<td><span data-bind="text: wsNotes" /></td>
</tr>
</script>
请确保在绑定属性时通过函数语法访问电子邮件,即primaryEmail(),否则它将返回函数定义而不是值。
<div data-bind="template: { name : 'customerSearchDisplayTemplate'}"></div>
<script type="text/template" id="customerSearchDisplayTemplate">
<tr>
<td class="hiddenId">
<span data-bind="text: customerSearchID"/>
</td>
<td><span data-bind="text: fullName" /></td>
<td>
<a data-bind="text: primaryEmail,
attr: { href : 'mailto:'+primaryEmail() }" />
</td>
<td>
<a data-bind="text: secondaryEmail,
attr: { href : 'mailto:'+secondaryEmail() }"/>
</td>
<td><span data-bind="text: homePhone" /></td>
<td><span data-bind="text: workPhone" /></td>
<td><span data-bind="text: mobilePhone" /></td>
<td><span data-bind="text: lastLogonDate" /></td>
<td><span data-bind="text: wsNotes" /></td>
</tr>
</script>
如果你想全面采用MVVM,最好让你的视图保持尽可能的简单:
<a data-bind="text: primaryEmail, attr: {href: primaryEmailMailtoLink}"></a>
然后在您的视图模型上创建一个计算的可观察对象:
var ViewModel = function() {
var self = this;
// Observable property:
self.primaryEmail = ko.observable('foo@bar.com');
// Dependent observable:
self.primaryEmailMailtoLink = ko.computed(function() {
return 'mailto: ' + self.primaryEmail();
};
// Etc. (rest of your view model)
}
mailto
链接创建一个binding handler
,但我认为这是不必要的。在视图中显示带有mailto
链接的电子邮件是视图行为,应该留在那里。 - Kyeoticmailto
有功能,这一点很好,我认为一个binding handler
是包含这些功能的适当方式,通过向其传递选项。我仍然认为这不是业务逻辑。你要给邮件的人有一个emailaddress
,但这个人没有一个mailto
链接;它不是模型的属性,也不是一个函数。它纯粹是一种将电子邮件地址显示为可点击的链接的方式。 - Kyeotic