我想从itemRenderer调用名为“edit_groups()”的父函数。 我的itemRenderer的代码是:
<mx:VBox id="vbx_container" paddingBottom="4" paddingLeft="4" paddingRight="4" paddingTop="4" borderStyle="solid"
dropShadowEnabled="true" width="100%" height="100%" horizontalScrollPolicy="off" verticalScrollPolicy="off" >
<mx:Canvas width="100%" height="100%" horizontalScrollPolicy="off" verticalScrollPolicy="off" >
<mx:Image id="image" width="100" height="100" source="{data.thumb}" scaleContent="true" maintainAspectRatio="true"
complete="{image_smoothing_handler(event);}" trustContent="true" doubleClick="{CALL THE PARENT FUNCTION "edit_groups()"}"/>
</mx:Canvas>
</mx:VBox>
我从以下应用程序调用我的itemRenderer:
list_groups_modify.itemRenderer=new ClassFactory(groups.list_groups_modify_item_renderer);
<mx:Label text="{data.label}" textAlign="center" maxWidth="60" toolTip="{data.label}"/>
此致 Zeeshan
答案 0 :(得分:6)
尝试使用parentDocument
:
<mx:VBox id="vbx_container" paddingBottom="4" paddingLeft="4" paddingRight="4" paddingTop="4" borderStyle="solid"
dropShadowEnabled="true" width="100%" height="100%" horizontalScrollPolicy="off" verticalScrollPolicy="off" >
<mx:Canvas width="100%" height="100%" horizontalScrollPolicy="off" verticalScrollPolicy="off" >
<mx:Image id="image" width="100" height="100" source="{data.thumb}" scaleContent="true" maintainAspectRatio="true"
complete="{image_smoothing_handler(event);}" trustContent="true" doubleClick="parentDocument.edit_groups()"/>
</mx:Canvas>
</mx:VBox>
答案 1 :(得分:2)
您可以像这样引用outerDocument
<mx:VBox id="vbx_container" paddingBottom="4" paddingLeft="4" paddingRight="4" paddingTop="4" borderStyle="solid"
dropShadowEnabled="true" width="100%" height="100%" horizontalScrollPolicy="off" verticalScrollPolicy="off" >
<mx:Canvas width="100%" height="100%" horizontalScrollPolicy="off" verticalScrollPolicy="off" >
<mx:Image id="image" width="100" height="100" source="{data.thumb}" scaleContent="true" maintainAspectRatio="true"
complete="{image_smoothing_handler(event);}" trustContent="true" doubleClick="{outerDocument.edit_groups()}"/>
</mx:Canvas>
</mx:VBox>
答案 2 :(得分:2)
确保您要引用的内容设置为公共函数或变量。
答案 3 :(得分:0)
如果您收到错误 1069 且您的商品渲染器是单独的 mxml组件,则可能需要 使用:
parentDocument.parentDocument.functionName();
答案 4 :(得分:0)
我也面临过类似的情况,但据我所知,最好的方法是从项目渲染器调度一些自定义事件,并在父组件中捕获该事件。在eventlistener中调用父的函数。即使itemrenderer位于单独的mxml文件或actionscript类中,这也会起作用。
答案 5 :(得分:0)
我偶然发现这篇帖子在升级到Flex SDK 4.6后出现类似问题。我得到了可怕的错误1069与过去工作正常的代码。首选答案无效。
但是,我通过更改它来解决它:
document.owner.parentDocument
答案 6 :(得分:0)
您也可以使用这段代码(放置在项目渲染器中)查找下一个适用的父代:
internal function findTarget():MyTargetClass
{
for (var p:* = this; !(p is MyTargetClass || p == null); p = p.parentDocument) {}
return p;
}
用法示例:
override public function set data(value:Object):void
{
super.data = value;
findTarget().myFunction(value);
}