我正在尝试对URL中的查询字符串的值运行angular.forEach函数。
请考虑以下事项:
domain.com?quote=10"e=20
执行$scope.selectedQuotes = $stateParams.quote;
按预期工作并输出["10", "20"]
,创建一个数组。
但是具有相同的功能:
domain.com?quote=10
这会输出'10'作为字符串并在每个字符上运行forEach。
以下是完整代码:
$scope.selectedQuotes = $stateParams.quote;
console.log($scope.selectedQuotes);
angular.forEach($scope.selectedQuotes, function(quote){
}
所以问题是,你如何得到它所以它总是将值分类为数组?
答案 0 :(得分:1)
Docs已经说明了
如果URL中存在单个参数的多个值 (例如:/ foo?bar = 1& bar = 2& bar = 3)然后将值映射到数组 (例如:{foo:['1','2','3']})。但是,如果只有一个值 present(例如:/ foo?bar = 1)然后将该值视为单个值 (例如:{foo:'1'})。
因此,即使你在状态内有array: true
变量类型,你也可以将quote
状态参数作为数组。如果单个值显示在quote
上,则会将string
视为'10'
答案 1 :(得分:1)
好的......添加:
params: {
quote: { array: true }
}
国家控制人员解决了这个问题。
答案 2 :(得分:0)
您可以使用map():
执行此操作$scope.selectedQuotes = $stateParams.quote;
console.log($scope.selectedQuotes);
angular.forEach($scope.selectedQuotes, function(quote){
return quote.map(function(newArray) {
return newArray;
});
}
答案 3 :(得分:-1)
if(Array.isArray($scope.selectedQuotes)){
//itar with angular.forEach
} else{
$scope.selectedQuotes=[$scope.selectedQuotes]
// then itar with angular.forEach
}