设置进度条的进度值时,“setProgress not a function”错误

时间:2011-03-01 21:57:29

标签: flex flex3 flex4

我想在手风琴中设置进度条的值,但我遇到'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>

1 个答案:

答案 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的更多信息。