2017-01-29 4 views
1

$scope.fullname = function (option) { 
    $http.get('files/names.json').success(function (data) {  
     for (var i = 0; i < data.length; i++) {   
      if (data[i].key === option) 
       return data[i].value; 
     } 
    }) 
}; 

とマークアップで:

<td class="secondary-text">{{fullname (list.countrycode) }}</td> 

重大なエラーが発生し、ブラウザがクラッシュします。 誰かが私にこれを解決するのを手伝ってもらえますか?リストをメモリに入れ、そのリストから国コードを調べるにはどうすればいいですか?

私のJSONファイルは、このようなものです:

{ 
    "BD": "Bangladesh", 
    "BE": "Belgium", 
    "BF": "Burkina Faso", 
    "BG": "Bulgaria", 
    "BA": "Bosnia and Herzegovina", 
    "BB": "Barbados", 
    "WF": "Wallis and Futuna", 
    "BL": "Saint Barthelemy", 
    "BM": "Bermuda", 
    "BN": "Brunei", 
... 
+1

エラーは何ですか?あなたの質問に詳細を投稿できますか?あなたのサイトのcountry.ioも、あなたのプロジェクトのjsonファイルを参照したいだけですか?または外部サイトから国のリストを受け取ることができますか?質問の上部と下部が互いに矛盾しています – lifejuggler

+1

それを分解してデバッグします。コードの最初の行にデバッガを配置し、.successのコールバックでデバッガを使用して、どこが間違っているのかを正確に把握してください。 –

+0

@lifejugglerサイトは私のものではありません。私は、あなたが私のjsonファイルの構造を見るためにそれを参照しています。おそらく私の反復は、jsonファイルのこの構造に基づいて有効ではありません。 – passion

答えて

4

もちろんブラウザは、この行でクラッシュします:

<td class="secondary-text">{{fullname (list.countrycode) }}</td> 

あなたはfullname()関数が呼び出される回数を知っていますか?すべてのダイジェストサイクル!これは何度も起こります。

$http.get('files/names.json').success(function (data) { 
    $scope.fullnames = data;  
}) 

を、ビューに、あなたは

<td class="secondary-text" ng-repeat="(key,value) in fullnames" ng-if="key == list.countrycode">{{value }}</td> 

Iドンのような何かを行うことができます:あなたのコントローラで

あなたは、コントローラ内から直接、サーバーに単一の呼び出しを作成する必要がありますHTMLの外観はわかりませんが、一時バインディングを使用して改善することもできます:

<td class="secondary-text" ng-repeat="(key,value) in ::fullnames" ng-if="key == list.countrycode">{{value }}</td> 
関連する問題