2016-04-26 8 views
1

をオーバーライド、私は、ユーザーの設定(ラApacheのコモンズの設定)を実装して、キーと値の店舗を持っている:は私のアプリケーションではqx.core.Object番号バインド

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を完全に上書きすることはできますか?または、標準qx.core.Object#bind(委任先はqx.data.SingleValueBinding)が動作するように、Configurationクラスの内部をモデル化する必要がありますか? 2番目のシナリオでは、実際のプロパティでキー名を反映させるために生成されたクラスがいくつか含まれています(qx.data.marshal.Json#toClassと同様)。率直に言って、それは私にとってはちょっと複雑なようです。どう思いますか?

答えて

3

バインディングメカニズムを置き換えることは簡単な作業ではありませんが、バインドを許可するためにbind()をオーバーライドしてからに設定すると、一部のプロパティからバインドできなくなりますの設定。明らかに、これは有用かどうかはアプリケーションによって異なりますが、たとえば、構成エディタのUIを作成する場合は、標準のフォームバインディングは機能しません。

また、コンフィグレーションオブジェクトを実際のクラスとしてビルドすることもできます。双方向バインディングが有効です。強制的なデータ型、イベント、メソッドを適用してプロパティを持つことができます。リフレクション、

一方、それぞれのために正式なAPI構造を作成することなく、簡単な設定を作成(忘れること)できることはしばしば非常に便利です。

最終的には、保存したいデータに依存し、複雑さが増すにつれて、保存するデータがより複雑になり、簡単に保存するのが困難になることがあります文字列と値のペア。

関連する問題