如何为Flex Datagrid创建可重用的labelFunction?
发布时间:2020-12-15 02:14:31 所属栏目:百科 来源:网络整理
导读:我有一个标签功能,如: private function formatDate (item:Object,column:DataGridColumn):String{ var df:DateFormatter = new DateFormatter(); df.formatString = "MM/DD/YY"; if (column.dataField == "startDate") { return df.format(item.startDate)
我有一个标签功能,如:
private function formatDate (item:Object,column:DataGridColumn):String { var df:DateFormatter = new DateFormatter(); df.formatString = "MM/DD/YY"; if (column.dataField == "startDate") { return df.format(item.startDate); } return "ERR"; } 我使用labelFunction在数据列中使用它. 如果我的数据字段被称为’startDate’,这可以正常工作.我想让这个函数通用,所以我可以在任何地方使用它. 我怎样才能做到这一点.我想我需要使用某种“反思” – 或者可能是另一种方法? 解决方法
你可以定义另一个函数,让我们将它称为partial,它将一些额外的参数绑定到你的函数:
function partial( func : Function,...boundArgs ) : Function { return function( ...dynamicArgs ) : * { return func.apply(null,boundArgs.concat(dynamicArgs)) } } 然后你改变你的功能: 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"; } 请注意,我在参数列表中首先添加了一个名为dataField的新参数,并将所有对“startDate”的引用替换为该参数. 并像这样使用它: var startDateLabelFunction : Function = partial(formatDate,"startDate"); var endDateLabelFunction : Function = partial(formatDate,"endDate"); partial函数返回一个新函数,该函数调用原始函数,调用参数将部分与参数连接到新函数…你跟我一起?放置它的另一种方法是它可以返回一个新函数,其中N个参数预先绑定到特定值. 让我们一步一步地完成它: partial(formatDate,“startDate”)返回一个如下所示的函数: function( ...dynamicArgs ) : * { return func.apply(null,boundArgs.concat(dynamicArgs)); } 但是func和boundArgs是你作为参数传递给partial的东西,所以你可以说它看起来像这样: function( ...dynamicArgs ) : * { return formatDate.apply(null,["startDate"].concat(dynamicArgs)); } 当它被称为时,它或多或少与此相同 function( item : Object,column : DataGridColumn ) : * { return formatDate("startDate",item,column); } 田田! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |