如何从控制器调用 angular 服务?

How can I invoke an angular service from a controller?

我有一个包含以下代码的 angular 模块:

angular.module('sampleModule', [])

.service('myService', [function () {
    this.showAlert = function () {
        alert("Hello");
    };

    this.sum = function (a, b) {
        return a + b;
    };
}])

.controller('SampleCtrl', ['myService', '$scope', function ($scope, myService) {
    this.doSum = function () {
        var result = myService.sum(1, 2);
        alert(result);
    };
}]);

当我调用 doSum 时,我得到:

TypeError: myService.sum 不是函数

有什么想法吗?谢谢!

你的控制器 DI 是错误的-注意参数的顺序:

.controller('SampleCtrl', ['$scope', 'myService', function ($scope, myService) {
    this.doSum = function () {
        var result = myService.sum(1, 2);
        alert(result);
    };
}]);

注射顺序不正确的问题。 $scope 应该在 myService 之前。

Correct code:
.controller('SampleCtrl', ['$scope', 'myService', function ($scope, myService) {
    this.doSum = function () {
        var result = myService.sum(1, 2);
        alert(result);
    };
}]);