Class CGIKit::Delegate
In: docs/rdoc_ja.rb
Parent: Object

CGIKit::Delegate オブジェクトはエレメントにセットするデリゲートです。 エレメントの一部の処理を CGIKit::Delegate オブジェクトに委譲することができます。 どのような処理を委譲できるかは各エレメントを参照してください。

通常デリゲートを使うことはあまりないかもしれませんが、 エレメントの出力を操作したい場合や機能を拡張したい場合に デリゲートを使うと、コンポーネントやエレメントを作るより楽かもしれません。 例えば、CGIKitでは Ajax::Alert, Ajax::Confirm などの一部のJavaScriptの処理を デリゲートとして実装しています。

デリゲートの使用

デリゲートをエレメントにセットするには次のようにします。

  • CGIKit::Delegate のサブクラスを作る
  • エレメントの指定するデリゲートメソッドを実装する
  • エレメントの delegate 属性にデリゲートクラスを指定する

デリゲートオブジェクトは、リクエスト・レスポンスループ時に 自動的に生成されます。またセッションには保存されないので、 状態を維持するような処理は実装しないでください。

例) CGIKit::TextField にデリゲートをセットする

 class TextFieldDelegate < CGIKit::Delegate
   def textfield_will_generate_tag( tag )
     ...
   end
 end

 :TextField => {
   :element => TextField,
   :value => :"value1",
   :delegate => TextFieldDelegate
 }

デリゲートの設定

エレメントのように、デリゲートに属性を持たせることもできます。 デリゲートの属性を設定するには、エレメントの delegate 属性にハッシュで さらにデリゲートの属性を指定します。 必ず class 属性にデリゲートクラスを指定してください。

例) CGIKit::SubmitCGIKit::Ajax::Alert デリゲートをセットする

 :Submit => {
   :element => Submit,
   :delegate => {
     :class => CGIKit::Ajax::Alert,
     :message => 'submit'
   }
 }

デリゲートオブジェクトから、 バインディングファイルで設定されたデリゲート属性にアクセスするには bool, value, set_value のメソッドを使います。 上記の例では value(:message) で message 属性値を取得できます。

Methods

Classes and Modules

Module CGIKit::Delegate::BrowserDelegate
Module CGIKit::Delegate::CheckboxDelegate
Module CGIKit::Delegate::ConditionalDelegate
Module CGIKit::Delegate::ElementDelegate
Module CGIKit::Delegate::FormDelegete
Module CGIKit::Delegate::ImageDelegate
Module CGIKit::Delegate::LinkDelegate
Module CGIKit::Delegate::PopupDelegate
Module CGIKit::Delegate::RadioDelegate
Module CGIKit::Delegate::RepetitionDelegate
Module CGIKit::Delegate::StringDelegate
Module CGIKit::Delegate::SubmitDelegate
Module CGIKit::Delegate::TextDelegate
Module CGIKit::Delegate::TextFieldDelegate

Constants

SUPPORT_CLASSES = []

Attributes

bindings  [RW]  デリゲートの属性。
component  [RW]  コンポーネント。
context  [RW]  CGIKit::Contextオブジェクト。
element  [RW]  オブジェクトに処理を委譲するエレメント。

Public Class methods

このクラスが指定したクラスに対応しているなら真を返します。

See Also: support_classes

このクラスがデリゲートとして対応するエレメントのクラスの配列を返します。 空の配列を返るとすべてのエレメントに対応します。 特定のエレメントにのみ対応させたい場合はオーバーライドしてください。 デフォルトは空の配列を返します。

See Also: support?

Public Instance methods

name の属性値を取得し、真偽で返します。 does_resolve が真なら、属性値がシンボルであればメソッドとみなして コンポーネントのメソッドを実行した戻り値を属性値とします。

See Also: value

name の属性が定義されていれば真を返します。

name 名の属性にバインドされた変数に value を代入します。

See Also: value

name の属性値を取得します。 does_resolve が真なら、属性値がシンボルであればメソッドとみなして コンポーネントのメソッドを実行した戻り値を属性値とします。

See Also: bool, set_value

[Validate]