Angular重构控制器投入使用

时间:2014-07-09 16:26:41

标签: angularjs angular-routing angular-services

我想创建一个可以在多个控制器中使用的服务。该服务本质上只是返回我在几个页面中使用的JSON数据。我想要两个控制器,一个用于“事件页面”,另一个用于“事件详细信息”页面。我希望查询返回“事件”页面上的整个数据对象,并过滤到“事件详细信息”页面的一个事件。我的逻辑是我可以将$ routeParams作为“事件详细信息页面”上的查询函数的参数传递。

我的控制器看起来像这样:我目前只有两个路由的一个控制器,我想要一个服务和两个控制器。一个控制器返回整个数据集,一个只返回过滤后的数据集。

app.controller('eventController', ['$scope', '$resource', '$routeParams' function ($scope, $resource, $routeParams) { 
  var Hc = $resource('/api/hc');

 Hc.query(function(results){
    $scope.events = results;

});

  $scope.events = []

}]); 

我的$ routeProvider语句在这里:

.when('/events', {
            templateUrl: 'templates/events.html',
            controller: 'eventController'
    })

    .when('/events/:eventName', {
        templateUrl: 'templates/eventdetail.html',
        controller: 'eventController'
    })

1 个答案:

答案 0 :(得分:0)

你可以这样做:

app.factory("HC", ["$resource", function($resource) {
    return {
        API: $resource('/api/hc')
    }
}]);

然后在你的控制器中:

app.controller('eventController', ['$scope', 'HC', '$routeParams' function ($scope, HC $routeParams) {

    HC.API.query(function(results) {
        $scope.events = results
    });
}]);