当前位置: 代码迷 >> Web前端 >> Function.apply在组件中的运用
  详细解决方案

Function.apply在组件中的运用

热度:134   发布时间:2012-11-22 00:16:41.0
Function.apply在组件中的应用
在Flex的方法参数中,可以使用预先赋值的方式,所以在这样的方法中参数的数量就不固定,因此可以在组件中方法设置参数的时候使用Function.apply方法,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" 
			   xmlns:container="pizazz.flex4.container.*"
			   minWidth="955" minHeight="600">
	<s:layout>
		<s:VerticalLayout />
	</s:layout>
	<fx:Script>
		<![CDATA[
			import mx.containers.Form;
			import mx.containers.FormHeading;

			private function clikcHandler():void{
				addElement(createForm("1", ["点击1", null, 200]));
				addElement(createForm("2", ["点击2"]));
			}
			
			private function createForm(label:String, button:Array):Form{
				const _form:Form = new Form();
				var _head:FormHeading = new FormHeading();
				_head.label = label;
				var _btn:Button = buttonFactory.apply(null, button);
				_form.addElement(_head);
				_form.addElement(_btn);
				return _form;
			}
				
			public function buttonFactory(label:String,
					onClick:Function = null, width:Number = NaN, 
					icon:Class = null, target:Button = null):Button{
				if(!target){
					target = new Button();
				}
				if(onClick != null){
					target.addEventListener(MouseEvent.CLICK, onClick);
				}
				if(icon != null){
					target.setStyle("icon", icon);
				}
				target.setStyle("cornerRadius", 0);
				target.width = width;
				target.label = label;
				return target;
			}	
		]]>
	</fx:Script>
	<s:Button width="100" label="点击" click="clikcHandler()" />
</s:Application>


这样应用,组件方法实现就比较灵活了
  相关解决方案