MXML自定义组件中的三向绑定(仅使用mxml)

时间:2011-06-22 13:35:17

标签: actionscript-3 actionscript mxml

我正在尝试仅使用mxml,no< script>标签,虽然我不一定需要一个只有mxml的解决方案。看看我是否可以用mxml完成​​所有操作,这更像是一种教育练习。

我有一个自定义组件,它有一个滑块和textinput,它们的值/文本属性绑定在一起。我在组件中显示滑块的一些属性,以便它可以像滑块一样处理。

<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" verticalAlign="middle" horizontalGap="0">
   <mx:int id="value">{slider.value}</mx:int>
   <mx:int id="minimum">0</mx:int>
   <mx:int id="maximum">100</mx:int>
   <mx:int id="tickInterval">25</mx:int>
   <mx:Array id="labels">['0%','50%','100%']</mx:Array>

   <mx:HSlider id="slider" liveDragging="true" snapInterval="1" 
         value="{int(input.text)}" 
         minimum="{minimum}" 
         maximum="{maximum}" 
         tickInterval="{tickInterval}" 
         labels="{labels}"/>
   <mx:Spacer width="25"/>
   <mx:TextInput id="input" restrict="0-9" text="{slider.value}" maxChars="3" width="30"/>
   <mx:Label text="%"/>
</mx:HBox>

请注意,滑块的VALUE属性绑定到输入字段的TEXT属性,反之亦然。双向绑定。这允许用户滑动拇指或在输入字段中键入以选择值,并且它们保持彼此同步。

此外,组件的VALUE属性绑定到滑块的VALUE属性,以便此组件的值始终包含滑块的值(以便可以像滑块一样使用组件)。

滑块的属性也绑定到组件的属性(最小值,最大值,刻度线)

问题是我想从组件的值初始化滑块的值,但滑块的值已经绑定到textinput。我还可以将它绑定到组件吗?

我的申请会有类似的内容:

<local:mycomponent minimum="20" maximum="80" labels="['20','50','80']" value="40"/>

我试过的一些不起作用的东西:

(1)我有一个初始化处理程序。

<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" initialize="slider.value=value">

如果我的应用

,这会有效
myslider.value = 40;

但如果我有

则无效
<local:mycomponent value="40"/>

(2)我尝试了一个creationComplete处理程序

(3)我尝试了mx:binding

<mx:Binding source="slider.value" destination="this.value"/>

好像我错过了一些简单的东西。

1 个答案:

答案 0 :(得分:0)

注意大括号:

<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" initialize="{slider.value=value}">

在括号中,可能有任何代码。没有它们,只能有事件处理程序(函数)。