2

Google Closureで(Soyテンプレートから生成された)ドキュメントフラグメントを取得し、レジストリ内の対応するUIコンポーネントで要素を再帰的に装飾する方法を探しています。

これは、DOMをトラバースし、レジストリに対してクラスをチェックし、必要に応じて装飾する関数を使用して実現するのは比較的簡単なはずですが、これは非常に基本的なユースケースのようで、単純なものが欠けているのではないかと思いました。 。

計画した実装を進める必要がありますか、それともライブラリのどこかにこれを処理する関数がありますか?

あるいは、テンプレートを装飾する私の全体的なアプローチに欠陥がありますか?私の意図は、最小限のJavaScriptを使用して、Soyで宣言的にUIコンポーネントのライブラリから複雑なコンポーネントを設計できるようにすることです。

4

1 に答える 1

3

はい、ライブラリはそのままではこれをサポートしていません。おそらく内部の Google コードでサポートされているかもしれませんが、より多くの制御を行うために、あまり完全ではないアプローチを好んでいたのではないかと思います。

私たちのアプローチはより多段階化されています。少し説明します。

事前レンダリングを (可能な限り) 使用したい場合、json データはテンプレートに 1 対 1 でマッピングする必要があります。そのため、json ファイルは、モデルを最新の状態に保ち、コンポーネントを作成する JavaScript を生成するためのスキーマを提供します。 (これは、ファクトリに登録することで拡張でき、その後、装飾用に登録されます)。この生成されたコードには、コンポーネントが装飾されたときに自動的に呼び出されるdecorateChildrenステップが含まれているため、再帰が発生します。実際には、デリゲート テンプレートのオーバーライドを使用して拡張可能なテンプレートも生成します (テンプレート システム IMO の素晴らしい機能)。

あなたはすでに正しい軌道に乗っていると思います。必要に応じてコードを書くだけです。

于 2013-01-09T13:14:05.980 に答える