Вызов родительской функции из itemRenderer - PullRequest
4 голосов
/ 06 февраля 2010

Я хочу вызвать родительскую функцию под названием "edit_groups ()" из itemRenderer. Код для моего 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

Ответы [ 7 ]

7 голосов
/ 06 февраля 2010

Попробуйте, используя 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>
2 голосов
/ 08 февраля 2010

Убедитесь, что вы пытаетесь сослаться на публичную функцию или переменную.

2 голосов
/ 06 февраля 2010

Вы можете сослаться на 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>
1 голос
/ 19 октября 2012

Если вы получаете сообщение об ошибке 1069 и ваш рендерер элементов является отдельным mxml компонентом , вам может потребоваться использование:

parentDocument.parentDocument.functionName();
0 голосов
/ 22 октября 2015

Вы также можете использовать этот фрагмент кода (помещенный в средство визуализации элементов), чтобы найти следующего подходящего родителя:

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);
}
0 голосов
/ 11 декабря 2013

Я наткнулся на этот пост с такой же проблемой после обновления до Flex SDK 4.6. Я получал страшную ошибку 1069 с кодом, который работал нормально. Предпочтительный ответ не сработал.

Однако я решил это, изменив его на использование:

document.owner.parentDocument
0 голосов
/ 05 ноября 2012

Я также сталкивался с подобными ситуациями, но, по моему мнению, лучший способ - отправить какое-то пользовательское событие из средства визуализации элементов и перехватить это событие в родительском компоненте. Внутри Eventlistener вызовите функцию родителя. Это будет работать, даже если itemrenderer находится в отдельном файле mxml или классе actionscript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...