Adobe flex dateField

Tengo un código de la siguiente manera:

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

En esencia, estoy tratando de agregar 5 días a la fecha seleccionada en df_date y poner esa fecha en df_dateDue. Esto se activa a través de un EventListener en un cuadro combinado. Tanto df_date como df_dateDue son dateFields.

Bien, entonces la primera vez que ejecuto esto, funciona bien; df_date permanece igual y df_dateDue se establece en 5 días después de df_date. Sin embargo, la próxima vez que lo ejecute, df_dateDue se incrementa en 10 días desde df_date, la próxima vez en 15, y así sucesivamente.

Entonces, recorrer el código muestra que de alguna manera df_date se ha vinculado a la var temp, y que la var temp no se reinicia cada vez que se llama a la función.

Ejemplo: df_date = 01 de enero, df_dateDue = 01 de enero.

  1. Dispare el evento, df_date = 01 de enero, df_dateDue = 06 de enero

  2. Vuelve a disparar el evento. En este punto, var temp = 06 Jan (aunque df_date todavía muestra 01 Jan), y df_dateDue se establece en 11 Jan

  3. Vuelve a disparar el evento. En este punto, var temp = 11 de enero (aunque df_date = 01 de enero), y df_dateDue se establece en 16 de enero

¿Que me estoy perdiendo aqui?

preguntado el 08 de enero de 11 a las 22:01

1 Respuestas

En Flex / AS, las variables que contienen objetos en realidad son solo indicadores de un espacio de memoria. Las fechas en Flex son un objeto, no un tipo nativo. Esta línea:

var temp:Date = df_date.selectedDate;

Crea un nuevo puntero a un objeto de fecha existente. No crea una copia.

Esta línea:

temp.date += 5;

incrementa la propiedad de fecha del objeto dateObject. Todas las referencias que apuntan a ese objeto de fecha se actualizarán. Intenta usar objectUtil.copy

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

Ah, y aumente su tasa de aceptación.

Respondido el 09 de enero de 11 a las 17:01

Gracias por la respuesta. Sin embargo, tuve que hacer el siguiente cambio, ya que parece que ObjectUtil no puede copiar un objeto Date.var temp: Object = ObjectUtil.copy (view.df_date); var d: Date = temp.selectedDate; - JonoB

@jonoB Probablemente podrías haberlo lanzado en una sola línea. Actualizaré mi respuesta. - JeffryHouser

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.