Flex 4.6移动应用程序
我收到错误“访问未定义属性PrepForDisplay”
在我的声明标签中我有
<s:CurrencyFormatter id="PrepForDisplay"
currencySymbol=""
useCurrencySymbol="true"
negativeCurrencyFormat="0"
positiveCurrencyFormat="0"/>
在我的MXML部分,我有
<s:List id="lst" dataProvider="{dp}" useVirtualLayout="true" width="100%" height="95%" top="30" alternatingItemColors="[#66FFFF, #33CCCC]">
<s:itemRenderer>
<fx:Component>
<s:ItemRenderer>
<s:HGroup gap="10">
<s:Label text="{data.Period}" />
**<s:Label text="{PrepForDisplay.format(data.Payment)}" />**
</s:HGroup>
</s:ItemRenderer>
</fx:Component>
粗线表示错误。 如果我将其更改为Number(data.Payment).toFixed(2)一切正常。 我已经使用currencyFormatter,就像我在其他视图上获得成功一样。我甚至可以在函数中使用它,但是当我尝试在标签中应用它时,我得到了错误。
有什么想法吗?
欢呼声,
答案 0 :(得分:3)
我的猜测是,它是一个范围错误,换句话说,格式化程序是在组件的范围内创建的,它创建了列表,而itemrenderer被实例化为列表。因此它不知道在itemrenderer中引用的变量(PrepForDisplay)。
要解决此问题,只需在itemrenderer中移动CurrencyFormatter标记:
<s:ItemRenderer>
<fx:Declarations>
<s:CurrencyFormatter id="PrepForDisplay"
currencySymbol=""
useCurrencySymbol="true"
negativeCurrencyFormat="0"
positiveCurrencyFormat="0"/>
</fx:Declarations>
<s:HGroup gap="10">
<s:Label text="{data.Period}" />
<s:Label text="{PrepForDisplay.format(data.Payment)}" />
</s:HGroup>
或者只是在单独的文件中定义itemrenderer。