【问题标题】:Passing parameter in flex function在 flex 函数中传递参数
【发布时间】:2010-06-25 02:40:13
【问题描述】:

我有几个特定形式的 TextInputs,它们已按递增顺序分配了 id。例如:

<s:TextInput id = "index1"/>
<s:TextInput id = "index2"/>
<s:TextInput id = "index3"/>

根据某些条件,我从相应的 TextInput 中选择文本并将值 (index#.text) 传递给函数

 foo(var index:String)

如果我只有一个我可以使用的 TextInput:

foo(index1.text)

有人可以建议我如何使用它的 id 传递 textInput。

谢谢。

-H

【问题讨论】:

  • 我认为您需要详细说明“某些条件”的含义。这看起来像是我会使用事件的那种事情,但我不能确定你在这里的意思。

标签: apache-flex


【解决方案1】:

我加上“某些条件”的请求。您的帖子暗示了您无法通过名称访问组件的事实,因此我将根据该假设编写其余部分。

要访问组件的值并将该组件的参数传递给函数,您需要一个标识符或链接到该组件。如果您使用组件名称,这是最简单的。但是,这并不总是可能的。例如,Flextras 日历组件创建并显示一个月中的日期。根据显示的月份,可能有 28、30 或 31 天。通过唯一名称访问它们是不切实际的。

这是 ListBased 类中的类似情况。在编译时,您不会知道一次在屏幕上需要或拥有多少个 itemRenderer。

解决此问题的一种方法是使用一组相关对象(dayRenderers、itemRenderers 或在您的情况下为 TextInputs)。在进行处理时,您可以遍历数组并处理元素。像这样的:

for (var x = 0; x<objectArray.length; x++){
   foo(objectArray[x].text); 
}

如果您不希望这样做,无论出于何种原因,您都可以遍历容器的子项,执行以下操作:

for (var x = 0; x<container.numChildren; x++){
  var object : Object = this.getChildat(x);
  if(object is TextInput){ foo(object.text) }
}

功能齐全,但有时可能有点乏味。这真的取决于你想要完成什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多