Maslosoft Binder Documentation
Knockout JS tracker and binding handlers with coffee and sugar
HREF Attribute
HREF binding handler is a shorthand for attr binding handler for links href
attribute. Base syntax uses data bind HTML attribute:
<a data-bind="href: binder.model.Href.filename">Text</a>
Using with punches syntax
This binding, as well many others can be used with alternative syntax, called ko punches. Just
set href attribute to observable reference wrapped with curly braces:
<a href="{{binder.model.Href.filename}}">Text</a>
Live example
| Raw Link href | |
|---|---|
Link with data-bind |
This should point to above url |
Will wear-out inner a tags. Useful with user provided data. |
|
| Link with punches | Using ko punches |
Link with target _blank |
This should open in new window |
| Span element | This should have href attribute: |
Link value can be changed via JavaScript: Set href to `#`.
Example of using stopPropagation option:
| Default behavior | This should show alert |
|---|---|
Option stopPropagation set to true |
This should not show alert |
Relevant code used in examples:
<table class="table table-condensed">
<tr>
<th class="col-xs-6">Raw Link href</th>
<td class="col-xs-6">
<input data-bind="textInput: binder.model.Href.filename"/>
</td>
</tr>
<tr>
<th>Link with <code>data-bind</code></th>
<td>
<a data-bind="href: binder.model.Href.filename">This should point to above url</a>
</td>
</tr>
<tr>
<th>Will wear-out inner <code>a</code> tags. Useful with user provided data.</th>
<td>
<a data-bind="href: binder.model.Href.filename"><span data-bind="html: binder.model.Inner.filename"></span></a>
</td>
</tr>
<tr>
<th>Link with punches</th>
<td>
<a href="{{binder.model.Href.filename}}">Using ko punches</a>
</td>
</tr>
<tr>
<th>Link with target <code>_blank</code></th>
<td>
<a data-bind="href: binder.model.Href.filename" target="_blank">This should open in new window</a>
</td>
</tr>
<tr>
<th>Span element</th>
<td>
<span id="spanHref" data-bind="href: binder.model.Href.filename">This should have href attribute: </span>
</td>
</tr>
</table>
<table class="table table-condensed">
<tr>
<th>Default behavior</th>
<td>
<span onclick="alert('Clicked on span around link')">
<a data-bind="href: binder.model.Href.filename">This should show alert</a>
</span>
</td>
</tr>
<tr>
<th>Option <code>stopPropagation</code> set to <code>true</code></th>
<td>
<span onclick="alert('Clicked on span around link')">
<a data-bind="href: binder.model.Href.filename, stopPropagation: true">This should <i>not</i> show alert</a>
</span>
</td>
</tr>
</table>
<script>
window.onload = (function(){
binder.model.Href = new Maslosoft.Koe.Href({filename: 'http://example.com/'});
binder.model.Inner = new Maslosoft.Koe.Href({filename: '<a href="http://example.org/">Should not have inner link inside</a>'});
ko.applyBindings({model: binder.model}, document.getElementById('ko-binder'));
});
</script>