flex使用的outerDocument

从 <mx:Component> 中定义的变量仅作用于那个组件/内联 itemRenderer。同样, <mx:Component> 外的内容在不同的作用范围内, 就像这个组件是在另一个文件中定义的那样。例如, 假设您为这个 itemRenderer 添加了一个 Button, 允许用户从在线零售商那里购买书籍。Button 调用它们的 click 事件上的函数, 所以您可以如下定义这个按钮:

Xml代码 
  1. <mx:Button label="Buy" click="buyBook(data)" />
<mx:Button label="Buy" click="buyBook(data)" />

如果在文件的 <mx:Script> 块中定义 buyBook() 函数, 会显示一个错误, 指出 buyBook() 是一个未定义的方法。这是因为 buyBook() 是在文件的作用范围内而不是在 <mx:Component> 的作用范围内定义的。由于这是一个典型用例, 使用 outerDocument 标识符可以避开这个问题:

Xml代码 
  1. <mx:Button label="Buy" click="outerDocument.buyBook(data)" />
<mx:Button label="Buy" click="outerDocument.buyBook(data)" />

outerDocument 标识符将作用范围更改为查找文件或外部文档, 并引用 <mx:Component>。现在请注意: 这个函数必须是公共函数, 而不是受保护或私有函数。记住, <mx:Component> 被视为外部定义的类。  




FLEX中使用itemRenderer调用父页面的方法使用关键字outerDocument

调用的父页面方法必须是PUBLIC声明的方法

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:local="*"
layout="absolute" >
<mx:Script>
<![CDATA[
import mx.controls.CheckBox;
import mx.controls.Alert;
[Bindable]
private var dp:Array = [
{idx:1, names: "test1", sex: "b" },
{idx:2, names: "test2", sex: "g" }

];
public function doSelect(o:Object):void
{
Alert.show("选择了"+o.idx+"/"+o.names+"/"+o.sex);

}
]]>
</mx:Script>
<mx:DataGrid id="dg1" dataProvider ="{dp}">

<mx:columns>
<mx:DataGridColumn width="20" headerText="" >
<mx:itemRenderer>
<mx:Component>
<mx:CheckBox change=" {outerDocument.doSelect(data as Object)} " />
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn headerText="names" dataField="names" width="200" />
<mx:DataGridColumn headerText="sex" dataField="sex" width="300" />

</mx:columns>
</mx:DataGrid>
</mx:Application>


转载于:https://www.cnblogs.com/programmer-wind/archive/2012/01/30/2919562.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值