can.observe.setter.js | |
---|---|
/*!
* CanJS - 1.1.4 (2013-02-05)
* http://canjs.us/
* Copyright (c) 2013 Bitovi
* Licensed MIT
*/
(function (can, window, undefined) { | |
can/observe/setter/setter.js | can.classize = function (s, join) { |
this can be moved out .. used for getter setter | var parts = s.split(can.undHash),
i = 0;
for (; i < parts.length; i++) {
parts[i] = can.capitalize(parts[i]);
}
return parts.join(join || '');
}
var classize = can.classize,
proto = can.Observe.prototype,
old = proto.__set;
proto.__set = function (prop, value, current, success, error) { |
check if there's a setter | var cap = classize(prop),
setName = "set" + cap,
errorCallback = function (errors) {
var stub = error && error.call(self, errors); |
if 'setter' is on the page it will trigger the error itself and we dont want to trigger the event twice. :) | if (stub !== false) {
can.trigger(self, "error", [prop, errors], true);
}
return false;
},
self = this; |
if we have a setter | if (this[setName] && |
call the setter, if returned value is undefined, this means the setter is async so we do not call update property and return right away | (value = this[setName](value, function (value) {
old.call(self, prop, value, current, success, errorCallback)
}, errorCallback)) === undefined) {
return;
}
old.call(self, prop, value, current, success, errorCallback);
return this;
};
})(can, this);
|