Chr*_*mbo 2 apache-flex mxml itemrenderer
我正在通过学习Flex来攻击我,并发现了一些奇怪的行为.当我尝试编译我的代码时,我抛出了这个错误 - 错误:调用可能未定义的方法updateStory.我之前以这种方式使用了方法调用,并且在这种情况下无法发现出错的地方.这是组件的代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var storyCards:ArrayCollection;
private function updateStory():void
{
trace("success");
}
]]>
</mx:Script>
<mx:TileList dataProvider="{storyCards}" >
<mx:itemRenderer>
<mx:Component>
<mx:HBox>
<mx:Label />
<mx:TextInput keyUp="updateStory()" />
<mx:TextArea text="{data.notes}" />
</mx:HBox>
</mx:Component>
</mx:itemRenderer>
</mx:TileList>
</mx:Canvas>
Run Code Online (Sandbox Code Playgroud)
谁能指出我正确的方向?
小智 7
问题出在mx:Component父标记上.
来自文档:
< mx:Component >标记在MXML文件中定义新范围,其中项目渲染器或项目编辑器的本地范围由< mx:Component >和< / mx:Component >标记分隔的MXML代码块定义.要访问项呈示器或项目编辑器的本地范围之外的元素,请在元素名称前加上outerDocument关键字.
所以你需要公开'updateStory'并添加outerdocument关键字,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var storyCards:ArrayCollection;
public function updateStory():void
{
trace("success");
}
]]>
</mx:Script>
<mx:TileList dataProvider="{storyCards}" >
<mx:itemRenderer>
<mx:Component>
<mx:HBox>
<mx:Label />
<mx:TextInput keyUp="outerDocument.updateStory()" />
<mx:TextArea text="{data.notes}" />
</mx:HBox>
</mx:Component>
</mx:itemRenderer>
</mx:TileList>
</mx:Canvas>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1746 次 |
| 最近记录: |