Class | CGIKit::Delegate |
In: |
docs/rdoc_ja.rb
|
Parent: | Object |
CGIKit::Delegate オブジェクトはエレメントにセットするデリゲートです。 エレメントの一部の処理を CGIKit::Delegate オブジェクトに委譲することができます。 どのような処理を委譲できるかは各エレメントを参照してください。
通常デリゲートを使うことはあまりないかもしれませんが、 エレメントの出力を操作したい場合や機能を拡張したい場合に デリゲートを使うと、コンポーネントやエレメントを作るより楽かもしれません。 例えば、CGIKitでは Ajax::Alert, Ajax::Confirm などの一部のJavaScriptの処理を デリゲートとして実装しています。
デリゲートをエレメントにセットするには次のようにします。
デリゲートオブジェクトは、リクエスト・レスポンスループ時に 自動的に生成されます。またセッションには保存されないので、 状態を維持するような処理は実装しないでください。
例) CGIKit::TextField にデリゲートをセットする
class TextFieldDelegate < CGIKit::Delegate def textfield_will_generate_tag( tag ) ... end end :TextField => { :element => TextField, :value => :"value1", :delegate => TextFieldDelegate }
エレメントのように、デリゲートに属性を持たせることもできます。 デリゲートの属性を設定するには、エレメントの delegate 属性にハッシュで さらにデリゲートの属性を指定します。 必ず class 属性にデリゲートクラスを指定してください。
例) CGIKit::Submit に CGIKit::Ajax::Alert デリゲートをセットする
:Submit => { :element => Submit, :delegate => { :class => CGIKit::Ajax::Alert, :message => 'submit' } }
デリゲートオブジェクトから、 バインディングファイルで設定されたデリゲート属性にアクセスするには bool, value, set_value のメソッドを使います。 上記の例では value(:message) で message 属性値を取得できます。
SUPPORT_CLASSES | = | [] |
bindings | [RW] | デリゲートの属性。 |
component | [RW] | コンポーネント。 |
context | [RW] | CGIKit::Contextオブジェクト。 |
element | [RW] | オブジェクトに処理を委譲するエレメント。 |
このクラスがデリゲートとして対応するエレメントのクラスの配列を返します。 空の配列を返るとすべてのエレメントに対応します。 特定のエレメントにのみ対応させたい場合はオーバーライドしてください。 デフォルトは空の配列を返します。
See Also: support?
name の属性値を取得し、真偽で返します。 does_resolve が真なら、属性値がシンボルであればメソッドとみなして コンポーネントのメソッドを実行した戻り値を属性値とします。
See Also: value
name の属性値を取得します。 does_resolve が真なら、属性値がシンボルであればメソッドとみなして コンポーネントのメソッドを実行した戻り値を属性値とします。
See Also: bool, set_value