【问题标题】:Adobe flex dateFieldAdobe flex 日期字段
【发布时间】:2011-01-08 22:23:54
【问题描述】:

我有一些代码如下:

private function onComboChange(evt:Event):void {
  var temp:Date = df_date.selectedDate;
  temp.date += 5;
  df_dateDue.selectedDate = new Date(temp);
}

本质上,我试图将 5 天添加到 df_date 中的选定日期,并将该日期放入 df_dateDue。这通过组合框上的 EventListener 触发。 df_date 和 df_dateDue 都是 dateFields。

好的,所以我第一次运行它时,它运行良好; df_date 保持不变,df_dateDue 设置为 df_date 过去 5 天。但是,下次我运行它时,df_dateDue 从 df_date 开始增加 10 天,下一次增加 15 天,依此类推。

因此,单步执行代码表明 df_date 已以某种方式链接到 temp var,并且 temp var 不会在每次调用函数时自行重置。

示例:df_date = 1 月 1 日,df_dateDue = 1 月 1 日。

  1. 触发事件,df_date = 1 月 1 日,df_dateDue = 1 月 6 日

  2. 再次触发事件。此时,var temp = 06 Jan(尽管 df_date 仍然显示 01 Jan),然后将 df_dateDue 设置为 11 Jan

  3. 再次触发事件。此时 var temp = 11 Jan(即使 df_date = 01 Jan),然后 df_dateDue 设置为 16 Jan

我在这里错过了什么?

【问题讨论】:

    标签: apache-flex adobe datefield


    【解决方案1】:

    在 Flex/AS 中,包含对象的变量实际上只是指向某些内存空间的指针。 Flex 中的日期是一个对象,而不是本机类型。这一行:

    var temp:Date = df_date.selectedDate;
    

    创建一个指向现有日期对象的新指针。它不会创建副本。

    这一行:

    temp.date += 5;
    

    增加 dateObject 的日期属性。指向该日期对象的所有引用都将被更新。尝试使用objectUtil.copy

    var temp:Date = ObjectUtil.copy(df_date.selectedDate) as Date;
    

    哦,提高你的接受率。

    【讨论】:

    • 感谢您的回答。不过,我必须进行以下更改,因为 ObjectUtil 似乎无法复制 Date object.var temp:Object = ObjectUtil.copy(view.df_date); var d:Date = temp.selectedDate;
    • @jonoB 您可能可以将它放在一行中。我会更新我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多