我想在手风琴中设置进度条的值,但我遇到'setProgress不是函数'错误。知道下面的代码有什么问题。
观察: 如果我将进度条移出Accordian,则错误消失,进度条显示正常。
我想最后将进度条设置为{repMonitor.currentItem.threatLevel}但是现在我只是测试假设的威胁值,即60
<mx:Accordion id="monAccordian" includeIn="Monitoring" x="10" y="10" width="554" height="242" change="monAccordianChange()" >
<mx:Repeater id="repMonitor" dataProvider="{monitoringArray}">
<mx:Canvas width="100%" height="100%" label="{repMonitor.currentItem.firstName+' '+ repMonitor.currentItem.lastName}" >
<mx:Image x="10" y="10" source="{repMonitor.currentItem.imageName}" width="175" height="118"/>
<s:Label x="200" y="14" text="Threat Level:"/>
<mx:ProgressBar x="200" y="30" mode="manual" label="" id="bar" width="200" creationComplete="bar.setProgress(60,100);" />
</mx:Canvas>
</mx:Repeater>
</mx:Accordion>
答案 0 :(得分:1)
这源于您的ProgressBar在转发器中的事实。您不能通过id引用重复的项目,因为您将拥有可变数量的ProgressBars,其ID为“bar”。
在Repeater对象中使用事件侦听器时还有一些特殊注意事项:
Repeater组件中的事件处理程序
当Repeater组件忙时 重复,每个重复的对象 它创建可以在那一刻绑定到 Repeater组件的currentItem 财产,正在改变 重复器组件重复。你不能 为每个实例提供自己的事件 通过编写类似的东西来处理 点击= “doSomething的({r.currentItem})” 因为绑定表达式不是 在事件处理程序中允许,以及所有 重复组件的实例 必须共享相同的事件处理程序。
重复组件并重复 中继器组件有一个 返回的getRepeaterItem()方法 dataProvider属性中的项 用于生成对象的。 Repeater组件完成后 重复,你可以使用 getRepeaterItem()方法来确定 事件处理程序应该做什么 在currentItem属性上。为此, 你通过了 event.currentTarget.getRepeaterItem() 事件处理程序的方法。该 getRepeaterItem()方法需要一个 可选索引,指定哪个 您想要的转发器组件 嵌套的Repeater组件是 当下; 0指数是最外层的 中继器组件。如果你不 指定索引参数, 最里面的Repeater组件是 暗示。
您可以阅读有关此in the Repeater docs的更多信息。