2014-05-12 3 views
1

나는 새내기에 대한 질문에 유감스럽게 생각합니다.하지만 완전히 엉망입니다.해결에서 컨트롤러 ui-router로 json 데이터 전달

resolve을 사용하여 경로가 변경되면 컨트롤러에 데이터를 미리로드하려고합니다. 서버에서 데이터를 다시 가져 오는 중이며 컨트롤러에 resolve 개체를 주입하고 있지만 뭔가 작동하지 않습니다. 여기

은 UI 라우터

resolve: { 
    categoryList: function ($http) { 
     $http.get('cfc/category.cfc?method=getCategories') 
      .success(function (data) { 
       return data; 
      }); 
    } 
},... 

누군가가 내가 잘못 무엇인지 설명 할 수 컨트롤러

app.controller('CategoryController', ['$scope', '$http', 'categoryList', 
    function ($scope, $http, categoryList) {... 

의 해결 부분입니까?

답변

3

마이너 작은 세부 사항 :.

resolve: { 
    categoryList: function ($http, $q) { 
     var defObj = $q.defer(); 
     $http.get('cfc/category.cfc?method=getCategories') 
      .success(function (data) { 
       defObj.resolve(data); 
      }); 
     return defObj.promise; 
    } 
},... 

무엇 일어나는 것은 약속이 컨트롤러는 데이터가 전달되지 않았 음을 의미하는로드 된 후 해결된다는 것이다 그것을 이연 객체를 추가하고 반환하여, 당신이 얻을 약속 된 데이터가 해결 된 후 컨트롤러에 주입되고 모든 것이 잘되어야합니다. 또한 오류 처리기로 $ http 호출 실패를 처리하고 컨트롤러에서 감지하고 반응 할 수있는 더미 데이터를 삽입 할 수 있습니다.

+0

작품 prefectly이다 기본적으로 약속을 반환합니다. 고맙습니다! –

0

사실 $http 그래서 당신이해야 할 모든 javascript return $http.get(...

관련 문제