我为添加推送方法扩展了ArrayCollection类
package com.cargo.collections
{
import mx.collections.ArrayCollection;
public class DataCollection extends ArrayCollection {
public function DataCollection(source:Array = null) {
super(source);
}
public function push(...parameters):uint {
var i:uint = source.push(parameters);
this.refresh();
return i;
}
}
}
但推送的数据是数组:/
var test:DataCollection = new DataCollection({id: 1});
test.source.push({id: 2});
test.push({id: 3});
输出
test = Array( {id: 1}, {id: 2}, Array({id: 3}) )
答案 0 :(得分:3)
在您的示例中,...parameters
创建一个包含传递给该函数的所有参数的数组。这应该按预期工作:
public function push(...parameters):uint {
var i:uint = source.push(parameters[0]);
this.refresh();
return i;
}
或者,如果您的目的是启用多个参数的推送,则可以使用Function.apply()方法,该方法将给定数组转换为多个参数:
public function push(...parameters):uint {
var i:uint = source.push.apply(null,parameters);
this.refresh();
return i;
}
这相当于说
var i:uint = source.push(parameters[0],parameters[1],parameters[2]); // etc