2016-04-11 7 views
-1

URLのクエリ文字列の値にangular.forEach関数を実行しようとしています。角の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){ 
} 

そこで問題は、あなたが配列としてので、常にクラス値を、それを得るのですか、ですか?次いで、値は、単一のパラメータの複数の値は、(?/ fooのバー= 1つの&バー= 2 &バー= 3など)URLに 存在する場合

+0

これは私に期待される動作のように思えます。それが配列か文字列かを検出し、それに応じて動作させる必要があります。 –

+0

@KevinB docsは既に同じことを言っていました。私は答えとして –

答えて

1

OK ...追加などstringとさせていただきます。

+0

を追加しました。それを実際に追加することで動作しますか?私はそれを疑っています。 –

+0

うん。今は完璧に動作します。 –

1

Docsは既にその

を述べています配列 にマッピングされます(例:{foo:['1'、 '2'、 '3']})。しかし、1つの値が (たとえば、/ foo?bar = 1)の場合、値は単一値 (例:{foo: '1'})として扱われます。

ですから、配列として状態のquoteパラメータを持っているように、あなたが国家内部array: trueとして変数の型を持っている場合でも。これを解決し、状態コントローラに

params: { 
    quote: { array: true } 
} 

:単一の値がquoteに対して表示されたら、それは'10'

-1
if(Array.isArray($scope.selectedQuotes)){ 
//itar with angular.forEach 
    } else{ 
    $scope.selectedQuotes=[$scope.selectedQuotes] 
    // then itar with angular.forEach 
} 
0

あなたはmap()でそれを行うことができます:

$scope.selectedQuotes = $stateParams.quote; 
console.log($scope.selectedQuotes); 

angular.forEach($scope.selectedQuotes, function(quote){ 
    return quote.map(function(newArray) { 
     return newArray; 
    }); 
}