Angular forEach功能遇到麻烦

时间:2016-04-11 19:14:54

标签: angularjs

我正在尝试对URL中的查询字符串的值运行angular.forEach函数。

请考虑以下事项:

domain.com?quote=10&quote=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){
}

所以问题是,你如何得到它所以它总是将值分类为数组?

4 个答案:

答案 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
 }