2012-11-17 4 views
3

내가 JSON을 반환하는 서비스를, 가정 모델에 관련이 응답입니다 :AngularJS와이 액세스 JSON 객체가

{ 
    "model": 48870, 
    "id": 20 
} 

내가이 수행 할 수

$scope.response = Service.get(); 

을 그리고 그것은 할당합니다 JSON 응답은 $scope.response입니다. 여기서 문제는 model 또는 id$scope.response.model 또는 $scope.response.id을 통해 직접 액세스 할 수 없다는 것입니다. 이 상황에 대한 해결책은 서비스의 성공 콜백 함수를 정의하고 model 또는 iddata에서 가져 오는 것입니다. 그러나 $scope.response이 JSON 객체 전체를 포함하고 있기 때문에 이론적으로 (그리고 깨끗한 코드를 위해) 그 객체에 액세스 할 수 있어야합니다. 여기

두 질문 :이 모델의 AngularJS와 표현의 한계

  1. 인가?
  2. 각 통화에 대해 성공 콜백을 정의 할 필요없이 어떻게 자식 (심지어는 손자)을 가리킬 수 있습니까?
+2

1. 아니요, AngularJS에는 이러한 제한이 없습니다. 2.이 모델을 사용하는 방법에 따라 달라집니다 : html-template 데이터 바인딩 또는 컨트롤러 코드. 후자의 경우에는 '$ scope.response.model'이 사용되기 전에로드되어야합니다 (예 : 성공 콜백). 그렇지 않으면 ReferenceError가 발생합니다. –

+3

Service.get()의 모양은 무엇입니까? $ http.get 또는 이와 유사한 것을 사용하고 있다면 아마도 실제 JSON이 아닌 Promise를 반환하는 해당 함수와 관련된 문제 일 것입니다. 약속은 "템플릿 엔진에 의해 각도로 인식됩니다. 즉 템플릿에서 범위에 첨부 된 약속을 마치 결과 값인 것처럼 취급 할 수 있음을 의미합니다." [$ q] (http://docs.angularjs.org/api/ng.$q) –

+0

여러분 중 한 분이 대답으로 받아 들일 수 있도록 답장 해주십시오. 둘 다 정확하고 유효합니다. – abstractpaper

답변

1

.

See this short example

app.controller('MainCtrl', function($scope, $resource) { 
    $scope.data = $resource('data.json').get(function() { 
    $scope.loaded = true; 
    //now it's safe to access $scope.data's properties: 
    $scope.data.foo = $scope.data.id + ':' + $scope.data.model; 
    }); 
}); 

UI 바인딩이 자동으로 작동합니다.

관련 문제