Adobe Flex 3 ヘルプ

バインディング機能を使用する際の注意事項

バインディング機能を使用するときは、以下の点に注意してください。

  • スタイルプロパティにバインドすることはできません。
  • モデルをコンポーネントの dataProvider プロパティにバインドする場合は、モデルのアイテムを直接変更するのではなく、Collections API を使用してアイテムを変更してください。Collections API を使用しない場合、モデルをバインドしたコンポーネントは再描画されないので、モデルへの変更が表示されません。例えば、次のコードはお勧めしません。
    myGrid.getItemAt(itemIndex).myField = 1; 
    
    

    次のコードをお勧めします。

    myGrid.dataProvider.editField(itemIndex, "myField", 1);
    
    
  • Array のエレメントを実行時のバインディングソースとして使用することはできません。ソースの Array の個別のフィールドが変更された場合、バインドされた Array は更新されません。バインディングにより、インスタンス化の実行中に値がコピーされます。これは、<mx:Script> タグで変数が宣言された後、イベントリスナーが実行される前に行われます。

データバインディングのデバッグ

場合によっては、データバインディングが正常に機能せず、デバッグが必要になることがあります。データバインディングの問題の解決法を以下に示します。

  1. 警告に注意してください。

    バインディングが開始時に正常に動作していると、警告が表示されても問題がないと判断しがちですが、警告は重要です。

    getter プロパティまたは setter プロパティの [Bindable] が存在しないという警告が表示された場合、バインディングが開始時に正常に行われていても、プロパティに対するそれ以降の変更は認識されません。

    静的変数またはビルトインプロパティに関する警告が表示された場合、変更は認識されません。

  2. バインディングのソースが実際に変更されていることを確認します。

    バインディングのソースがさらに大きな処理の一部である場合には、ソースを割り当てていないことを忘れがちです。

  3. バインド可能イベントが送出されていることを確認します。

    Flex のコマンドラインデバッガ(fdb)または Adobe® Flex™ Builder™ のデバッガを使用して、dispatchEvent() メソッドが呼び出されているかどうかを確認できます。また、そのクラスに通常のイベントリスナーを追加して、確実に呼び出されるようにすることもできます。イベントリスナーをタグ属性として追加するには、[Event('myEvent')] メタデータをクラス定義の先頭に配置するか、MXML の <mx:Metadata> タグ内に配置する必要があります。

  4. setter 関数を作成し、<mx:Binding> タグを使用して割り当てます。

    そして、割り当てられる値を指定して、trace や alert などのデバッグコードを setter に配置することができます。この方法により、バインディング自体の正常な動作が保証されます。setter が適切な情報で呼び出されていれば、失敗した場合にバインディング先に問題があると判断できるので、そのバインディング先からデバッグを開始できます。

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート