2017-01-29 6 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>