【问题标题】:How to access a public function outside custom component in flex?如何在flex中访问自定义组件之外的公共功能?
【发布时间】:2013-02-14 19:57:09
【问题描述】:

我有一个应用程序宽度 mx:ViewStack 组件,每个 s:NavigatorContent 下都有不同的视图组件,如下所示。

<mx:ViewStack id="vsOne" resizeToContent="true">
    <s:NavigatorContent label="First">
        <package:MyFirstComponent id="myFirstComponent"/>
    </s:NavigatorContent>
    <s:NavigatorContent label="Second">
        <package:MySecondComponent id="mySecondComponent"/>
    </s:NavigatorContent>
</mx:ViewStack>

这是package.MyFirstComponent的重要部分..

<s:Button label="Next" click="somethingToGoForward()"/>

我尝试过的:

  1. 在视图组件中调用somethingToGoForward() 并尝试访问parent vsOne:不起作用。
  2. 调用parent.somethingToGoForward()(当此方法与ViewStack在同一个mxml中时):不工作

如何从包含它的 mxml 文件之外的任何位置更改我的 ViewStackselectedIndex

谢谢。

【问题讨论】:

标签: actionscript-3 apache-flex


【解决方案1】:

这是一个使用简单事件的示例:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"     initialize="application1_initializeHandler(event)"
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"  xmlns:local="*">
    <fx:Script>
    <![CDATA[
        import mx.events.FlexEvent;

        protected function application1_initializeHandler(event:FlexEvent):void
        {
            viewStack.selectedChild=one;

        }

        protected function one_changeViewHandler(event:FlexEvent):void
        {
            viewStack.selectedChild=two;
        }

        protected function two_changeViewHandler(event:FlexEvent):void
        {
            viewStack.selectedChild=one;

        }

    ]]>
</fx:Script>
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<mx:ViewStack id="viewStack" >
    <local:ccomp id="one" changeView="one_changeViewHandler(event)" text="LAbel ONE">

    </local:ccomp>
    <local:ccomp id="two" changeView="two_changeViewHandler(event)" text="LAbel TWO" >

    </local:ccomp>
</mx:ViewStack>
</s:Application>

ccomp 是一个自定义组件

<?xml version="1.0" encoding="utf-8"?>
    <mx:HBox xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">
<fx:Metadata>
    [Event(name="changeView", type="mx.events.FlexEvent")]  
</fx:Metadata>
<fx:Script>
    <![CDATA[
        import mx.events.FlexEvent;

        private var _text:String;

        public function get text():String
        {
            return _text;
        }
        [Bindable]
        public function set text(value:String):void
        {
            _text = value;
        }

        protected function button1_clickHandler(event:MouseEvent):void
        {
            this.dispatchEvent(new FlexEvent("changeView",true));               
        }
    ]]>
</fx:Script>

<fx:Declarations>
</fx:Declarations>
    <s:Button label="Change" click="button1_clickHandler(event)">
    </s:Button>
    <s:Label fontSize="24" text="{text}">
    </s:Label>
   </mx:HBox>

大卫

【讨论】:

    猜你喜欢
    • 2012-02-27
    • 1970-01-01
    • 2021-07-11
    • 2012-05-13
    • 2020-08-12
    • 2020-12-06
    • 1970-01-01
    • 2013-06-17
    • 2022-01-04
    相关资源
    最近更新 更多