multiple knockout for data knockout.js hyperlink mailto

knockout.js - for - knockout js data bind text



Href y enlaces de mailto en KnockoutJS (3)

Estoy tratando de mostrar una tabla con enlaces y mailto en una plantilla de visualización usando Knockout. Todavía soy muy nuevo para noquearme ¡Me disculpo por adelantado!

Esto es lo que mi plantilla de visualización fue originalmente:

<script type="text/template" id="customerSearchDisplayTemplate"> <td class="hiddenId">{0}</td> <td><a href="/wrenchsciencewebadmin2/UserManager/Customer/CustomerEditor.aspx?CustomerID={1}">{1}</a></td> <td><a href="mailto:{2}">{2}</a></td> <td>{3}</td> <td>{4}</td> <td>{5}</td> <td>{6}</td> <td>{7}</td> <td><a href="/wrenchsciencewebadmin2/Common/PopupWindows/CustomerNotes.aspx?customerid={8}">{8}</a></td> </script>

y esto es lo que tengo hasta ahora, menos los enlaces Y de mailto:

<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 data-bind="text: primaryEmail" /></td> <td><span data-bind="text: 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>


Asegúrese de acceder a los correos electrónicos a través de la sintaxis de la función cuando vincula el attr ie primaryEmail (), de lo contrario, devolverá las definiciones de la función en lugar del valor.

<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>

Ejemplo: http://jsfiddle.net/lifetimelearner/yr7SP/2/


Si quieres utilizar MVVM hasta el final, lo mejor es mantener tu vista lo más tonta posible:

<a data-bind="text: primaryEmail, attr: {href: primaryEmailMailtoLink}"></a>

Luego haga una observación computable en su modelo de vista:

var ViewModel = function() { var self = this; // Observable property: self.primaryEmail = ko.observable(''[email protected]''); // Dependent observable: self.primaryEmailMailtoLink = ko.computed(function() { return ''mailto: '' + self.primaryEmail(); }; // Etc. (rest of your view model) }


Usar las propiedades attr y text en el atributo de data-bind así:

<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>