2011-12-12 108 views
0

我在Flex手册中找到了MXML和ActionScript中的代码。问题是应该将“val”变量作为参数传递给updateMyString()函数调用语句,但它不会在代码中发生。这是为什么?带有FLEX代码的函数参数

<?xml version="1.0"?> 
<!-- binding/BindSetterAS.mxml --> 
<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"> 
    <s:layout> 
     <s:VerticalLayout/> 
    </s:layout> 
    <fx:Script> 
     <![CDATA[ 
      import mx.binding.utils.*; 
      import mx.events.FlexEvent; 
      // Method called when myTI.text changes. 
      public function updateMyString(val:String):void { 
       myTA.text = val.toUpperCase(); 
      } 
      <!-- Event listener to configure binding. --> 
      public function mySetterBinding(event:FlexEvent):void { 
       var watcherSetter:ChangeWatcher = 
        BindingUtils.bindSetter(updateMyString, myTI, "text"); 
      } 
     ]]> 
    </fx:Script> 
    <s:Label text="Bind Setter using setter method"/> 
    <s:TextInput id="myTI" 
     text="Hello Setter" /> 
    <s:TextArea id="myTA" 
     initialize="mySetterBinding(event);"/> 
</s:Application> 

回答

0

var watcherSetter:ChangeWatcher = BindingUtils.bindSetter(updateMyString, myTI, "text");

的功能是这样的:

bindSetter(functionToCall, objectToBind, PropertyToBind)

所以,你实际上是结合myTI.text。这被作为参数传递给functionToCall,即updateMyString。得到它了?

+0

此评论是没有问题的。它惊人地与这个评论一起工作。 – chrisiek

+0

当我删除注释 –

+0

时,它对我来说非常完美,我知道它可以正常工作,但是它是如何发生的,我们没有将参数传递给函数...并且它仍然有效。 – chrisiek