【问题标题】:Using strings to access custom methods dynamically使用字符串动态访问自定义方法
【发布时间】:2009-02-23 18:24:26
【问题描述】:

我正在创建一个二维列表,该列表在“天”结束时具有连续数字,用作 DataGrid 的 dataProvider 我一直在通过命令访问它们
dg1.selectedItem.day1
dg1.selectedItem.day2
dg1.selectedItem.day3
等等……

有什么办法可以把字符串 ("day"+i) 转换成一个(它是什么?变量名?) 这样我就可以按照以下方式做一些事情:

for(var i:Number=1; i<numFields; i++)
{
  dg1.selectedIndex = i-1;
  dg1.selectedItem.(mysteryFunction("day"+i)) = 42;
}

如果有一个我可以用于神秘函数的函数,或者使用什么数据类型,任何信息都会很有帮助


这是我一直在使用的(太乏味了):

<mx:XMLList id="sched">
  <field>
      <day1></day1>
      <day2></day2>
      <day3></day3>
  </field>
  <field>
      <day1></day1>
      <day2></day2>
      <day3></day3>
  </field>

  ...
</mx:XMLList>

【问题讨论】:

    标签: apache-flex string flex3 variables


    【解决方案1】:

    您正在寻找的“神秘功能”就像用括号索引一样简单:

    for(var i:Number=1; i<numFields; i++)
    {
        dg1.selectedIndex = i-1;
        dg1.selectedItem["day"+i] = 42;
    }
    

    令人惊讶的是,它被称为属性。

    【讨论】:

      【解决方案2】:

      使用Array 或者如果你要绑定它(我有点赌注)使用ArrayCollection 而不是单独命名这些变量。

      如果成员是由某个程序生成的,最好将所有这些都放在我上面提到的集合类之一中,然后开始处理。从长远来看,它让生活更轻松。

      E4X 是处理 XML 的方法。 Mozilla 的人可以说拥有更好的explanation 技术。因此,如果您的 XML 存储在变量中:

      var tree:XML = <field>
          <day1></day1>
          <day2></day2>
          <day3></day3>
      

      你可以这样做:

      tree.day1 = 42;
      

      你为什么想要这个mysteryFunction()dataProvider 对象只是某种类型的集合。您已经知道类型,对吧?阅读this

      反正没有这么神秘的功能。但是请注意,字符串与数字的连接会将数字转换为字符串。试试

      trace("str " + 42);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-21
        • 2012-12-06
        • 2021-12-05
        • 1970-01-01
        • 2011-05-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多