| Server IP : 85.158.181.41 / Your IP : 216.73.217.12 Web Server : Apache System : Linux cloud9-vm129 6.1.178+1-ph #ph SMP PREEMPT_DYNAMIC Wed Jul 29 09:00:54 UTC 2026 x86_64 User : moncbefd ( 1024) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/moncbefd/www.moneta.at/JSEngine/constructors/ |
Upload File : |
/* --------------------------------------------------------------
data_binding.js 2016-05-17
Gambio GmbH
http://www.gambio.de
Copyright (c) 2016 Gambio GmbH
Released under the GNU General Public License (Version 2)
[http://www.gnu.org/licenses/gpl-2.0.html]
--------------------------------------------------------------
*/
(function () {
'use strict';
/**
* Data Binding Class
*
* Handles two-way data binding with UI elements.
*
* @class JSE/Constructors/DataBinding
*/
class DataBinding {
/**
* Class Constructor
*
* @param {String} name The name of the binding.
* @param {Object} $element Target element to be bond.
*/
constructor(name, $element) {
this.name = name;
this.$element = $element;
this.value = null;
this.isMutable = $element.is('input, textarea, select');
this.init();
}
/**
* Initialize the binding.
*/
init() {
this.$element.on('change', () => {
this.get();
});
}
/**
* Get binding value.
*
* @returns {*}
*/
get() {
this.value = this.isMutable ? this.$element.val() : this.$element.html();
if (this.$element.is(':checkbox') || this.$element.is(':radio')) {
this.value = this.$element.prop('checked');
}
return this.value;
}
/**
* Set binding value.
*
* @param {String} value
*/
set(value) {
this.value = value;
if (this.isMutable) {
this.$element.val(value);
} else {
this.$element.html(value);
}
}
}
jse.constructors.DataBinding = DataBinding;
})();