2014-11-25 2 views
1

$http.get을 사용하여 풀린 일부 JSON 데이터의 차트 데이터를 채 웁니다. 그러나 내가 가진 문제는 JSON이 반환 될 때까지 존재하지 않는 바인딩 인 $scope 속성이므로 페이지를로드 할 때 오류가 발생합니다.

어떻게 오류를 피할 수 있습니까? 나는 닭고기와 계란 시나리오를 가지고있는 것 같아.

예 :

promise.then(
    function(payload) { 
    $scope.Model.Data.Json.Charts = payload.data; 
}); 

json으로 다음 .Charts에서 앉아 개체를 정의하는 것입니다 :

$scope.Model.Charts.Electricity = { 
    series: [ 
    name: "2014 Target", 
    data: $scope.Model.Data.Json.Charts.Electricity.CurrentYearTarget 
    ] 
}; 

Electricity.CurrentYearTarget 속성은 약속이 완료 될 때까지 존재하지 않는 것입니다. 예 :

{"Electricity": 
    {"CurrentYearTarget": 
    [10000.0, 
     // snip 
    10000.0] 
    } 
} 

좋아, 그럼 어떻게해야합니까? $scope.Model.Charts.Electricity과 같은 모든 속성을 간단한 JavaScript if 문으로 래핑 할 수는 있지만 그렇게 느껴지지는 않습니다.

+0

는 응용 프로그램 시작시 또는 컨트롤러 초기화에서 변수를 초기화 : 요청 반환이있는 경우

그러나,이 점 옆에, 당신은 아직도 당신이 바로 데이터를 채우기 위해 원하는 acheive 수 있습니다 암호? –

답변

1

나는 $scope.Model.Data.Json.Charts.Electricity.CurrentYearTarget 다소 장황 당신이 어느 정도 접근 방식을 단순화 고려 제안 및 ModelData, Json 모두 같은 것은 정말, 당신은 아마 이들의 일부를 잘라 수 있음을 의미.

$scope.Model = { Data: { Json: { Charts: {} } } } 

promise.then(
    function(payload) { 

    $scope.Model.Data.Json.Charts = payload.data; 
    $scope.Model.Charts.Electricity = { 
     series: { 
     name: "2014 Target", 
     data: $scope.Model.Data.Json.Charts.Electricity.CurrentYearTarget 
     } 
    }; 
}); 
관련 문제