Puede definir otra función, vamos a llamarlo partial
que une a algunos argumentos adicionales a su función:
function partial(func : Function, ...boundArgs) : Function {
return function(...dynamicArgs) : * {
return func.apply(null, boundArgs.concat(dynamicArgs))
}
}
A continuación, cambiar su función como esta:
private function formatDate(dataField : String, item : Object, column : DataGridColumn) : String {
var df : DateFormatter = new DateFormatter();
df.formatString = "MM/DD/YY";
if (column.dataField == dataField) {
return df.format(item[dataField]);
}
return "ERR";
}
Tenga en cuenta que he añadido un nuevo argumento llamado dataField
primero en la lista de argumentos, y reemplazó todas las referencias a "startDate" con ese argumento.
y utilizarlo como esto:
var startDateLabelFunction : Function = partial(formatDate, "startDate");
var endDateLabelFunction : Function = partial(formatDate, "endDate");
La función partial
devuelve una nueva función que llama a la función original con los parámetros de la llamada a concatenados parcial con los parámetros a la nueva función ... que con ¿yo? Otra forma de decirlo es que puede devolver una nueva función donde N de los argumentos están predefinidos a valores específicos.
Vamos a través de él paso a paso:
partial(formatDate, "startDate")
devuelve una función que tiene este aspecto:
function(...dynamicArgs) : * {
return func.apply(null, boundArgs.concat(dynamicArgs));
}
pero el func
y boundArgs
son lo que pasa como argumentos para partial
, por lo que se podría decir que se ve así:
function(...dynamicArgs) : * {
return formatDate.apply(null, ["startDate"].concat(dynamicArgs));
}
que, cuando se llame, será más o menos el igual que este
function(item : Object, column : DataGridColumn) : * {
return formatDate("startDate", item, column);
}
Tada!
Esto realmente debería ser la respuesta. E incluso puede convertirlo 'public static' en una clase util (por ejemplo,' GridUtils') y usarlo en toda la aplicación (por ejemplo 'labelFunction =" GridUtils.formatDate "') –
Esta es una buena respuesta. El otro es bastante complicado. Excepto que acabo de devolver df.format (item [column.dataField]); – Fletch