首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖qx.core.Object#bind

覆盖qx.core.Object#bind
EN

Stack Overflow用户
提问于 2016-04-26 14:09:08
回答 1查看 67关注 0票数 1

在我的应用程序中,我有一个实现用户配置的键值存储(一个):

代码语言:javascript
复制
var config = new Configuration();
config.set("foo.bar", "baz");
config.get("foo.bar"); // "baz"

虚线名称用于引入配置层次结构。我还希望以下几点发挥作用:

代码语言:javascript
复制
config.bind("foo.bar", target, "property.chain");

这里的想法是使用传统的qooxdoo绑定语义;区别是,"foo.bar“并不表示真实的属性链,它只是一个键名。

我应该如何实现这一点?用我的实现完全覆盖qx.core.Object#bind可以吗?还是应该对配置类的内部进行建模,使标准qx.core.Object#bind (委托给qx.data.SingleValueBinding)能够工作?第二个场景可能涉及一些生成的类(类似于qx.data.marshal.Json#toClass所做的),以反映具有真实属性的密钥名。坦白说,我觉得有点复杂。你认为如何?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-26 14:57:36

替换绑定机制并不是一项简单的任务,但它将是单向的--例如,虽然您可以覆盖bind()以允许从您的配置中绑定,但是您将无法从某个属性绑定回配置。显然,这取决于您的应用程序是否有用,但是(例如)如果您想要构建配置编辑器UI,标准的表单绑定将根本无法工作。

或者,您可以将您的配置对象构建为一个实际的类,这有几个优点--双向绑定可以工作,您可以具有强制数据类型、事件、应用方法的属性,可以使用反射检查结构,等等。

另一方面,能够创建(并忘记)简单的设置而不必为每个设置创建一个正式的API结构通常是非常有用的。

因此,最终您的里程可能会有所不同,因为它取决于您想要存储的数据,而且随着应用程序复杂性的增加,您希望存储的数据也可能变得更加复杂,并且更难以简单的字符串/值对存储。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36867416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档