覆盖 qx.core.Object#bind
Overriding qx.core.Object#bind
在我的应用程序中,我有一个实现用户配置(a la Apache Commons Configuration)的键值存储:
var config = new Configuration();
config.set("foo.bar", "baz");
config.get("foo.bar"); // "baz"
点名用于介绍配置层次结构。我还希望以下内容起作用:
config.bind("foo.bar", target, "property.chain");
这里的想法是使用传统的 qooxdoo 绑定语义;不同之处在于,"foo.bar" 并不表示真正的 属性 链,它只是一个键名。
我该如何实施?完全覆盖 qx.core.Object#bind
with my implementation? Or should I model the internals of Configuration class such a way that standard qx.core.Object#bind
(delegating to qx.data.SingleValueBinding
) would work? The second scenario would probably involve some generated classes (similar to what qx.data.marshal.Json#toClass
是否可以)以反映具有真实属性的键名。坦率地说,这对我来说似乎有点复杂。你怎么看?
替换绑定机制不是一项简单的任务,但它是单向的 - 例如,虽然您可以重写 bind() 以允许绑定 from 您的配置,但您会无法将某些 属性 绑定回 到 配置。显然,这是否有用取决于您的应用程序,但是(例如)如果您想构建一个配置编辑器 UI,标准表单绑定将根本不起作用。
或者,您可以将配置对象构建为实际 class,这有几个优点 - 双向绑定可以工作,您可以拥有强制数据类型、事件、应用方法的属性,您可以检查带反射的结构等
另一方面,能够创建(并忘记)简单设置而不必为每个设置创建正式的 API 结构通常非常有用。
所以最终你的里程数可能会有所不同,因为它取决于你想要存储的数据,随着你的应用程序复杂性的增加,你想要存储的数据也可能会变得更复杂并且更难存储简单 string/value 对。
在我的应用程序中,我有一个实现用户配置(a la Apache Commons Configuration)的键值存储:
var config = new Configuration();
config.set("foo.bar", "baz");
config.get("foo.bar"); // "baz"
点名用于介绍配置层次结构。我还希望以下内容起作用:
config.bind("foo.bar", target, "property.chain");
这里的想法是使用传统的 qooxdoo 绑定语义;不同之处在于,"foo.bar" 并不表示真正的 属性 链,它只是一个键名。
我该如何实施?完全覆盖 qx.core.Object#bind
with my implementation? Or should I model the internals of Configuration class such a way that standard qx.core.Object#bind
(delegating to qx.data.SingleValueBinding
) would work? The second scenario would probably involve some generated classes (similar to what qx.data.marshal.Json#toClass
是否可以)以反映具有真实属性的键名。坦率地说,这对我来说似乎有点复杂。你怎么看?
替换绑定机制不是一项简单的任务,但它是单向的 - 例如,虽然您可以重写 bind() 以允许绑定 from 您的配置,但您会无法将某些 属性 绑定回 到 配置。显然,这是否有用取决于您的应用程序,但是(例如)如果您想构建一个配置编辑器 UI,标准表单绑定将根本不起作用。
或者,您可以将配置对象构建为实际 class,这有几个优点 - 双向绑定可以工作,您可以拥有强制数据类型、事件、应用方法的属性,您可以检查带反射的结构等
另一方面,能够创建(并忘记)简单设置而不必为每个设置创建正式的 API 结构通常非常有用。
所以最终你的里程数可能会有所不同,因为它取决于你想要存储的数据,随着你的应用程序复杂性的增加,你想要存储的数据也可能会变得更复杂并且更难存储简单 string/value 对。