2016-10-06 3 views
0

ドロップダウンメニューがng-repeatで作成されていますが、jsonが文字列の場合、関数が失敗します。しかし、整数であればうまく動作します。AngularJS関数がjson文字列値で更新に失敗する

HERE IS EXAMPLE

あなたたちが見ることができるように、チャートが年を選択し、ドロップダウンでうまくアップロードされます。 私はデータが元のため整数であると信じています。 "year": 2011

私もクォータードロップダウンがあります。 "quarter": "1"で、これは更新に失敗しますが、もし私が"quarter": 2を持っていればうまく動作します。

<select class="YearSelector" ng-model="selectedyear" ng-change="sampleDropDown()"> 
     <option ng-repeat="year in filterOptions.stores | unique: 'year'"> 
     {{ year.year }}</option> 
    </select> 
    Quarter: 
    <select class="QuarterSelector" ng-model="$parent.quarter" ng-change="sampleDropDown()"> 
     <option ng-repeat="quarter in filterOptions.stores | unique: 'quarter'"> 
     {{ quarter.quarter }}</option> 
    </select> 

My機能:

$scope.sampleDropDown = function(){ 
myChart.data = getData(data, $scope.selectedyear, $scope.quarter); 
myChart.draw(500); 

}

+0

は、フィルタリングで比較値を数値にキャストするとうまくいきます。 – charlietfl

+0

@charlietflは、あなたが意味するものをかなり理解しました:/もし大丈夫なら投稿してテストして、変更したものを見ることができます。ありがとうございます – mtkilic

+0

@charlietfl私はあなたがMahmutのための最良の選択であることを示唆していると思うものを追加しました。あなたは確認できますか?よりエレガントな方法がありますか? – defaultcheckbox

答えて

1

HTMLマークアップのように見えますが、オプション値が先頭の改行で終わります。あなたはすべて1行になるためにあなたのHTMLオプションのマークアップを変更した場合

"year value ' 
     2011'" 

:コンソールで

function getData(data, year, quarter) { 
    console.log("year value '" + year + "'") ; 

あなたが表示されます:あなたは、次のようにconsole.logを追加する場合は、それを見ることができます私はあなたがうまく行くと思う、例えば四半期:

<option ng-repeat ...>{{ quarter.quarter }}</option> 

また、+ ng-repeatオプションの代わりにAngular's ngOptionsを使用することもできます。

+0

これは私の問題を解決しました、感謝Edgardo! – mtkilic

1

私は@charlietfl手段は、あなただけの番号にあなたの文字列を変換すべきだと思います。

$scope.sampleDropDown = function(){ 
    myChart.data = getData(data, parseInt($scope.selectedyear), parseInt($scope.quarter)); 
    myChart.draw(500); 
    } 

IMOの場合、エラーはmyChart.drawでAngularよりも多くなるようです。

+0

これはちょうどあなたがダウンしてから最初に選択しなければならないように見えるので、このように機能します。それ以外の場合は、まず年を選択するとチャートが読み込まれません。また、国のような異なるデータでフィルタリングすることにした場合、これはうまくいくとは思わない:/ありがとう – mtkilic

+1

ええ、他の回答が来るのを見てみましょう。私はあなたがgetdataやconvetrフィルタ...または整数列のデータをクリーンアップするためにlodashを使用することができます。あなたはどんなタイプのソリューションを探していますか? – defaultcheckbox

+0

大丈夫、私の実際のデータには、5つのドロップダウン選択、2(整数)3(文字列)があります。私はフィルターがきれいになると思います。私はドロップダウンのために定義した関数の代わりに、私のng-repeatで使うことができるように見える。 – mtkilic

関連する問題