我有一个从作用域获取数组的函数,根据传递给它的选项以某种方式对其进行格式化并返回一个新数组。
看起来像这样:
$scope.utils.data: function (options) {
if (options === 'table') {
return $scope.sourceData
}
else {
return $scope.sourceData
.map(function (group, index) {
return {
x: group.x || 0,
y: group.y || 0,
radius: group.r || 0,
deals: group.d || 0,
id: index,
label: group.type
}
})
}
}
我检查选项是' table',然后返回未修改的源数据。但如果它是别的东西,那么将重新格式化的数据作为数组返回。
上面的示例工作正常,但现在我想添加更多选项作为参数,因此决定使用一个对象,如{type:'table', excluded:[2, 20, 31]}
,以便在存在此参数时排除三个项目。
问题在于,如果我将选项转换为对象,并检查options.type
或options.excluded
,就像我之前做的那样,但是使用对象而不是字符串,它会返回{{3} }。
在错误文档中写道:
一个常见错误是绑定到每次调用时都会生成新数组的函数。
所以我觉得return $scope.sourceData.map()
本身在这种情况下不合法,但只有当我将选项作为对象而不是字符串传递时才会中断,否则它会正常工作。
如何解决此问题?有线索吗?