Adobe Flex 日期字段

发布于 2024-10-11 05:08:37 字数 819 浏览 2 评论 0原文

我有一些代码如下:

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 = 01 Jan,df_dateDue = 01 Jan。

  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

我在这里缺少什么?

I have some code as follows:

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

In essence, I am trying to add 5 days onto the selected date in df_date, and put that date into df_dateDue. This fires off via an EventListener on a combobox. Both df_date and df_dateDue are dateFields.

OK, so the first time that I run this, it works fine; df_date stays the same and df_dateDue is set to 5 days past df_date. However, the next time that I run it, df_dateDue increments by 10 days from df_date, the next time by 15, and so on.

So, stepping through the code shows that somehow df_date has become linked to the temp var, and that the temp var is not resetting itself each time the function is called.

Example: df_date = 01 Jan, df_dateDue = 01 Jan.

  1. Fire off the event, df_date = 01 Jan, df_dateDue = 06 Jan

  2. Fire off the event again. At this point, var temp = 06 Jan (even though df_date still shows 01 Jan), and df_dateDue is then set to 11 Jan

  3. Fire off the event again. At this point var temp = 11 Jan (even though df_date = 01 Jan), and df_dateDue is then set to 16 Jan

What am I missing here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦一生花开无言 2024-10-18 05:08:37

在 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;

In Flex/AS, variables that contain objects are really just pointers to some memory space. Date's in Flex are an Object, not a native type. This line:

var temp:Date = df_date.selectedDate;

Creates a new pointer to an existing date object. It does not create a copy.

This line:

temp.date += 5;

increments the date property of the dateObject. All references pointing to that date object will be updated. Try using objectUtil.copy

var temp:Date = ObjectUtil.copy(df_date.selectedDate) as Date;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文