使用AngularJS将服务注入控制器

9 浏览
0 Comments

使用AngularJS将服务注入控制器

我用AngularJS编写了一个服务,但是我不能像angular-seed的方式那样使其正常工作。

控制器代码如下:

/*function PhotoCtrl($scope, Photo) {
    $scope.photos = Photo.query();
}*/
angular.module('myApp.controllers', []).
    controller('PhotoCtrl', [function($scope,Photo) {
    $scope.photos = Photo.query();
}])
.controller('MyCtrl2', [function() {
}]);

请注意,被注释掉的部分可以正常工作,但我想更像第二种(推荐的)方式处理它。

我得到的错误是Photo未定义,所以我猜想我的传递方法(注入)是错误的,但我无法找出如何正确地做。

admin 更改状态以发布 2023年5月21日
0
0 Comments

您需要定义Photo服务:

angular.module('myApp.controllers', [])
    .service('Photo', ['$log', function ($log) {
        return {
            query: function() {
                // the query code here.
            }
        };
    }])
    .controller('PhotoCtrl', ['$scope', 'Photo', function ($scope, Photo) {
        $scope.photos = Photo.query();
    }])
    .controller('MyCtrl2', [function() {
    }]);

一些参考:

在上述示例代码中,我使用了参数别名,建议您避免在压缩代码时出现问题。

在这里还有一个例子:
AngularJS multiple uses of Controller and rootScope

以及一个Plunker:
http://plnkr.co/edit/Bzjruq

0