Maslosoft Binder Documentation
Knockout JS tracker and binding handlers with coffee and sugar
Widget
Widget Binding Handler creates widget dynamically. This binding handler will
apply params to widget and call init
method if available when
creating widget and dispose
method when widget should be destroyed.
Both init
and dispose
method will receive current
element as parameter.
All parameters passed to params
will be applied to widget object
matching parameter name to object instance property name.
Example Widget
class @Maslosoft.BinderDev.Widgets.MyWidget # This field can be configured with `params` binding title: '' init: (element) => # Init widget # 1. Apply initial state # 2. Attach event handlers element.innerHTML = @title dispose: (element) => # Dispose widget: # 1. Remove event handlers # 2. Delete unnecessary objects
The ref
option will set value of passed reference name to
widget instance. The ref
value must be of type string, representing
path to javascript reference. Using this parameter it is possible to use widget
outside Knockout JS scope.
However when ref
is object, and no widget
param is present,
this binding will reuse existing object.
Example Widget Output:
Toggle Widget | Show ref (in console)Widget log:
Example Widget With ref
reusing existing object:
Widget log of second widget:
Relevant code used in examples:
<!-- ko if: binder.model.toggle.enabled --> <div data-bind="widget: Maslosoft.BinderDev.Widgets.MyWidget,params: {title:'My Title'},ref: 'binder.model.ref'" class="well"> </div> <!-- /ko --> <div data-bind="ref: binder.widget.other" class="well"> </div> <script> window.onload = (function () { binder.model.toggle = ko.tracker.factory({enabled: true}); binder.widget.other = new Maslosoft.BinderDev.Widgets.MyOtherWidget(); binder.widget.other.title = 'Title set in JavaScript'; ko.applyBindings({model: binder.model}, document.getElementById('ko-binder')); jQuery('body').tooltip({ selector: '[rel~="tooltip"]' }); }); </script>