Binding
by neonp
HTML
<div id="toto">
</div>
<input id="pwet" />
<input id="color" />
JavaScript
(function($) {
var eventNameChangingField = "fieldChanging",
eventNameChangedField = "fieldChanged";
eventNameBindingError = "bindingError";
Binding = function() {
this.getValue = function() {
var parts = this.expression.split('.');
var value = this.target;
for (var i = 0; i < parts.length; i++) {
value = value[parts[i]];
}
return value;
};
this.apply = function(elements, doNotRegisterEvents) {
var binding = this;
var val = binding.getValue();
var inputs = elements.filter(':input').val(val)
if (!doNotRegisterEvents) inputs.change(function() {
binding.setValue($(this).val(), this);
});
elements.filter(':not(:input))').text(val);
};
this.setValue = function(value, source, doNotTriggerEvents) {
var target = this.target;
var parts = this.expression.split(".");
if (parts.length > 1) {
try {
var binding = new Binding();
binding.target = $(target).getBinding(parts[0]).getValue();
parts.shift();
binding.expression = parts.join('.');
binding.setValue(value, source, doNotTriggerEvents);
}
catch (ex) {
$(document).triggerHandler(eventNameBindingError, {
target: target,
field: this.expression,
Exception: ex
});
}
}
else {
try {
var $target = $(target);
var eventArgs = {
cancel: false,
fieldName: parts[0],
source: source
};
if (!doNotTriggerEvents)...