2014-03-19 12 views
3

ui-router의 $ stateParams를 컨트롤러를 통해 $ httpd 팩토리 서비스에 전달하려고합니다. 그러나 나는 같은 것을 달성하는 방법에 관해서는 단서가 없다. $ http 팩토리 서비스는 cid 매개 변수를 기반으로 동적 데이터를 가져 오는 역할을 수행합니다. 이 경로 매개 변수를 공장 서비스의 백엔드 스크립트에 어떻게 전달합니까?

다음은 제 코드입니다.

.state('category',{url:'/category/:cid',templateUrl:'views/category.html',controller:'CategoryCtrl'}) 


myapp.factory('catService', function($http) { 
    return { 
    getCategory: function(callback) { 
     $http.post('categorydetail.php').success(callback); 
    } 
    } 
}); 

myapp.controller('CategoryCtrl', function($scope, catService) { 
    catService.getCategory(function(data,status) { 
    $scope.result = data; 
    }); 
}); 

도움을 주시면 감사하겠습니다. 고맙습니다.

답변

4
.state('category', { 
     url:'/category/:cid', 
     templateUrl:'views/category.html', 
     controller:'CategoryCtrl' 
} 
) 

myapp.factory('catService', function($http) { 
    return { 
    getCategory: function(cid, callback) { 
     $http.post('categorydetail.php?cid=' + cid).success(callback); 
    } 
    } 
}); 

myapp.controller('CategoryCtrl', function($scope, $stateParams, catService) { 
    catService.getCategory($stateParams.cid, function(data,status) { 
    $scope.result = data; 
    }); 
}); 
+0

감사 웨인. 이것은 그것을 수행 할 수있는 방법처럼 보입니다. 건배. – meheshu

0

상태가 준비되기 전에 $stateParams에 액세스해야한다는 것을 알고 있습니다. 상태 변경이 완료 될 때까지 $stateParams 객체로 변경하려는 상태의 매개 변수에 액세스 할 수 없습니다. 상태를 변경할 때 여러 가지 이벤트가 발생합니다. 처음에는 $stateChangeStart이며 상태 변경에 대한 알림을받으며 두 상태 모두에서 params을 얻을 수 있으므로 $stateChangeStart 이벤트를 사용하여 params에 액세스하여 언제든지 액세스 할 수 있습니다. 너는 그들을 필요로한다.

myapp.run(['$rootScope', function($rootScope) { 
    $rootScope.$on('$stateChangeStart', function (event, newState, newParams, oldState, oldParams) { 
     $rootScope.newParams = newParams; 
    }); 
}]); 

myapp.factory('catService', function($http, $rootScope) { 
    return { 
    getCategory: function(callback) { 
     $http.post('categorydetail.php?cid=' + $rootScope.newParams.cid).success(callback); 
    } 
    } 
}); 
관련 문제