我有一个包含用户出生日期的数据库,但我想显示他们的年龄。我有一个计算年龄的函数,但我不能在 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 之外时工作,只使用一个 DOB。