From c6f1ab1bd78f650cd3368af3f9c771c919b31e2e Mon Sep 17 00:00:00 2001 From: Thomas Lamprecht Date: Fri, 9 Feb 2018 08:28:34 +0100 Subject: [PATCH] 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 --- mixin/CBind.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/mixin/CBind.js b/mixin/CBind.js index 48bc7f4..ecf30e2 100644 --- a/mixin/CBind.js +++ b/mixin/CBind.js @@ -41,6 +41,19 @@ Ext.define('Proxmox.Mixin.CBind', { if (match[1]) cvalue = !cvalue; obj[prop] = cvalue; 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 { obj[prop] = cdata.replace(/{([a-z_][a-z0-9_]*)\}/ig, function(match, cname) { var cvalue = getConfigValue(cname); -- 2.39.2