2013/10/14

Flex: 「warning: unable to bind to property...」の対処方法パート2

前回「warning: unable to bind to property 'fogefoge' on class 'Object' (class is not an IEventDispatcher)」という警告が出た時の対処を紹介しましたが、別の対処方法もあるので、その方法も紹介します。

パート1では、「set data」をoverrideする方法で対処しました。今回は、自前のクラスを作成し、プロパティを[Bindable]タグを使うことで対処します。

 ■メイン側ソースコード
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
  xmlns:s="library://ns.adobe.com/flex/spark" title="Bindable"
  xmlns:myclasses="myclasses.*">
 <s:List width="100%" height="100%">
  <s:dataProvider>
   <s:ArrayList>
    <myclasses:Person firstName="Taro" lastName="Sato"/>
    <myclasses:Person firstName="Toshi" lastName="Takeda"/>
    <myclasses:Person firstName="Miku" lastName="Kishi"/>
    <myclasses:Person firstName="Ai" lastName="Ito"/>
   </s:ArrayList>
  </s:dataProvider>
  <s:itemRenderer>
   <fx:Component>
    <s:ItemRenderer>
     <s:HGroup>
      <s:Label id="lblFirstName" text="{data.firstName}"/>
      <s:Label id="lblLastName" text="{data.lastName}"/>
     </s:HGroup>
    </s:ItemRenderer>
   </fx:Component>
  </s:itemRenderer>
 </s:List>
</s:View>

■自前クラスソースコード

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
package myclasses
{
 public class Person extends Object
 {
  [Bindable]
  public var firstName:String;
  
  [Bindable]
  public var lastName:String;
 }
}

メイン側の"firstName"と"lastName"は"Person"クラスの変数として呼び出しています。"Person"クラス内で"firstName"と"lastName"は[Bindable]というタグをつけて、データバインディング可能変数としています。

http://flexponential.com/2009/11/11/binding-warnings-when-using-object-in-a-list-dataprovider/
http://help.adobe.com/en_US/flex/using/WS77c1dbb1bd80d3836ecbb5ec129ec77b1e1-8000.html

0 件のコメント:

コメントを投稿