Adobe Flex 日期字段

问题描述 投票:0回答:1

我有一些代码如下:

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

本质上,我试图在 df_date 中选定的日期上添加 5 天,并将该日期放入 df_dateDue 中。这通过组合框上的事件监听器触发。 df_date 和 df_dateDue 都是日期字段。

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

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

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

  1. 触发事件,df_date = 01 Jan,df_dateDue = 06 Jan

  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个回答
2
投票

在 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;
© www.soinside.com 2019 - 2024. All rights reserved.