首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular RouteParams发送ID

Angular RouteParams发送ID
EN

Stack Overflow用户
提问于 2015-05-20 23:19:55
回答 1查看 816关注 0票数 1

我试图通过工厂向使用$routeParams的控制器发送一个ID,但它不工作。

我的$routeProvider:

代码语言:javascript
复制
.when('/event/:eventId', {
    templateUrl : 'pages/event_detail.html',
    controller  : 'eventPageCtrl'
});

我的工厂:

代码语言:javascript
复制
myApp.factory('eventRepo', ['$http', function($http) {

    var urlBase = 'php/api.php';
    var eventRepo = {};

    eventRepo.getEvent = function (id) {
        return $http.get(urlBase + '?eventID=' + id);
    };

    return eventRepo;

}]);

我的控制器:

代码语言:javascript
复制
myApp.controller('eventPageCtrl', ['$scope', '$routeParams', 'eventRepo', 
        function ($scope, $routeParams, eventRepo) {

        $scope.getEvent = function (id) {
            eventRepo.getEvent($routeParams.eventId)
            .success(function (data) {
                $scope.eventsDetail = data;
            })
            .error(function (error) {
                $scope.status = 'Error retrieving event! ' + error.message;
            });
        };  

}]);

当在控制器中处理$http.get()时,而不是在工厂中,它工作得很好,所以我想我没有正确传递$routeParams?可能是这一行导致了问题eventRepo.getEvent($routeParams.eventId)

此方法目前有效,但尝试在控制器外部使用$http.get():

代码语言:javascript
复制
myApp.controller('eventPageCtrl', function($scope, $http, $routeParams) {

      $http.get("php/api.php?eventID="+$routeParams.eventId).success(function(data){
            $scope.eventsDetail = data;
           });
});
EN

回答 1

Stack Overflow用户

发布于 2015-05-20 23:48:41

如果在routeProver中使用resolve并返回eventId,然后将其注入到controller中,会怎么样?示例:

$routeProvider:

代码语言:javascript
复制
.when('/event/:eventId', {
        templateUrl : 'pages/event_detail.html',
        controller  : 'eventPageCtrl',
        resolve : {
                    eventId: function($route, $location) {
                        var eventId = $route.current.params.eventId;
                        return eventId;
    });

控制器:

代码语言:javascript
复制
myApp.controller('eventPageCtrl', ['$scope', 'eventId', 'eventRepo', 
        function ($scope, eventId, eventRepo) {   //add it as a dependency

        $scope.eventId = eventId;   //you can check this to see if its being assigned 
        $scope.getEvent = function (eventId) {     //Edit: eventId added here
            eventRepo.getEvent(eventId)            //Edit: eventId passed 
            .success(function (data) {
                $scope.eventsDetail = data;
            })
            .error(function (error) {
                $scope.status = 'Error retrieving event! ' + error.message;
            });
        };  

}]);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30353879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档