ユーザーの生年月日を含むデータベースを持っていますが、ユーザーの年齢を表示したいと思います。年齢を計算する関数がありますが、ItemRendererで使用できず、理由がわかりません。ItemRendererの外部でこのコードを使用すると、機能しないと思います。DOBにはによってアクセスされ{data.dob}
ます。
これが私のコードです:
<s:GridColumn dataField="age" headerText="Age" width="80">
<s:itemRenderer>
<fx:Component>
<s:GridItemRenderer>
<fx:Script>
<![CDATA[
// Retrieving the user's DOB
var dateStr:String = "{data.dob}";
//Splitting the DOB up to make it compatible with Flex
var parts:Array = dateStr.split("-");
if(parts == null || parts.length != 3)
{
Alert.show("There is an error retrieving the birthday.");
}
var dobDay:* = parts[2];
var dobMonth:* = parts[1] - 1;
var dobYear:* = parts[0];
var userDOB : Date = new Date(dobYear, dobMonth, dobDay);
var today : Date = new Date();
var diff : Date = new Date();
diff.setTime( today.getTime() - userDOB.getTime() );
var userAge : int = diff.getFullYear() - 1970;
]]>
</fx:Script>
<s:Label id="ageLbl" text="userAge" />
</s:GridItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:GridColumn>`
最初は#1084エラーが発生してvar dateStr:String = {data.dob};
いたので、に変更するvar dateStr:String = "{data.dob}";
とエラーがに移行しました1120: Access of Undefined property Alert
。私も同じエラーがありました:diff, parts, today, userAge, userDOB
。ここに何かアイデアはありますか?私が言ったように、コードはItemRendererの外部で、1つのDOBだけを使用して機能します。