自定义服务未正确声明

时间:2014-10-06 16:57:33

标签: angularjs angular-services

我是Angular.js的新手,在定义自定义服务时遇到困难。我按照https://docs.angularjs.org/tutorial上的教程进行了操作。

我的app.js:

var myApp = angular.module('myApp', [
  'ngRoute',
  'myControllers',
  'myFilters',
]);

我的services.js:

myApp.service('MathService', function() {

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

    this.subtract = function(a, b) { return a - b };

    this.multiply = function(a, b) { return a * b };

    this.divide = function(a, b) { return a / b };
});

我的controllers.js:

var myControllers = angular.module('myControllers', []);

myControllers.controller('catalogCtrl', ['$scope', '$routeParams', MathService, '$http',
   function($scope, $routeParams, $http) {
    console.log(MathService.add(4,5));
   }
]);

在调用MathService.add(4,5)之前,一切正常。

错误:

Uncaught ReferenceError: MathService is not defined controllers.js:8(anonymous function)

我错过了一些东西而无法找到答案。欢迎任何帮助!谢谢: - )

2 个答案:

答案 0 :(得分:1)

似乎你需要将MathService包装在单引号中然后放入`函数($ scope,... MathService ......'以及。

myControllers.controller('catalogCtrl', ['$scope', '$routeParams', 'MathService', '$http', function($scope, $routeParams, MathService, $http) {

console.log(MathService.add(4,5));

}]);

答案 1 :(得分:1)

您忘了将MathService传递给您的函数,而且您也错过了单引号。

myControllers.controller('catalogCtrl', ['$scope', '$routeParams', `MathService`, '$http',
    function($scope, $routeParams, MathService, $http) {
        console.log(MathService.add(4,5));
 }]);