mirror of
https://git.proxmox.com/git/proxmox-widget-toolkit
synced 2025-06-23 05:05:16 +00:00
mixin/CBind: allow binding sub elements
allow to access sub elements of configuration items for binding. E.g., if the following configuration is present: foo: { bar: true } one could do: xtype: 'displayfield', cbind { value: '{foo.bar}' } [...] This mirrors the abillity of ExtJS's 'bind', which can do this also. Simple implementation mirroring the surrounding code. Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
parent
f3cf5c9bd8
commit
c6f1ab1bd7
@ -41,6 +41,19 @@ Ext.define('Proxmox.Mixin.CBind', {
|
|||||||
if (match[1]) cvalue = !cvalue;
|
if (match[1]) cvalue = !cvalue;
|
||||||
obj[prop] = cvalue;
|
obj[prop] = cvalue;
|
||||||
found = true;
|
found = true;
|
||||||
|
} else if (match = /^\{(!)?([a-z_][a-z0-9_]*(\.[a-z_][a-z0-9_]*)+)\}$/i.exec(cdata)) {
|
||||||
|
var keys = match[2].split('.');
|
||||||
|
var cvalue = getConfigValue(keys.shift());
|
||||||
|
keys.forEach(function(k) {
|
||||||
|
if (k in cvalue) {
|
||||||
|
cvalue = cvalue[k];
|
||||||
|
} else {
|
||||||
|
throw "unable to get cbind data for '" + match[2] + "'";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (match[1]) cvalue = !cvalue;
|
||||||
|
obj[prop] = cvalue;
|
||||||
|
found = true;
|
||||||
} else {
|
} else {
|
||||||
obj[prop] = cdata.replace(/{([a-z_][a-z0-9_]*)\}/ig, function(match, cname) {
|
obj[prop] = cdata.replace(/{([a-z_][a-z0-9_]*)\}/ig, function(match, cname) {
|
||||||
var cvalue = getConfigValue(cname);
|
var cvalue = getConfigValue(cname);
|
||||||
|
Loading…
Reference in New Issue
Block a user