【问题标题】:Three way binding in MXML custom component (using only mxml)MXML 自定义组件中的三向绑定(仅使用 mxml)
【发布时间】:2011-06-22 13:35:16
【问题描述】:

我正在尝试仅使用 mxml,不使用

我有一个自定义组件,它有一个滑块和文本输入,它们的值/文本属性绑定在一起。我在组件中显示了滑块的一些属性,以便可以将其视为滑块。

<?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"/>

我好像漏掉了一些简单的东西。

【问题讨论】:

    标签: actionscript-3 actionscript mxml


    【解决方案1】:

    注意大括号:

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

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

    【讨论】:

    • 是的,这是我的错字。我的真实代码中有大括号。
    猜你喜欢
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 2012-12-09
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多