Angularjs 将ui路由器$stateParams传递给$http工厂服务

Angularjs 将ui路由器$stateParams传递给$http工厂服务,angularjs,http,factory,angular-ui-router,Angularjs,Http,Factory,Angular Ui Router,我试图通过控制器将ui路由器的$stateParams传递给$httpd工厂服务。但我不知道如何实现同样的目标$http工厂服务的作用是根据cid参数获取动态数据。如何将此路由参数传递到factory服务中的后端脚本 这是我的代码片段 .state('category',{url:'/category/:cid',templateUrl:'views/category.html',controller:'CategoryCtrl'}) myapp.factory('catService',

我试图通过控制器将ui路由器的$stateParams传递给$httpd工厂服务。但我不知道如何实现同样的目标$http工厂服务的作用是根据cid参数获取动态数据。如何将此路由参数传递到factory服务中的后端脚本

这是我的代码片段

.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;
  });
});

非常感谢你的帮助。谢谢。

据我所知,在状态准备就绪之前,您需要访问
$stateParams
。在状态更改完成之前,您无法使用
$stateParams
对象访问要更改到的状态的参数。更改状态时,会发生多个事件,首先是
$stateChangeStart
,您将收到有关更改状态的通知,并且可以在这两种状态下获取所有
参数,因此,您可以使用
$stateChangeStart
事件访问
参数
,并将它们放在某个地方,以便在需要时访问它们

.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;
  });
});
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);
    }
   }
});

谢谢你,韦恩。这看起来是一个可行的方法。干杯