Angularjs服务未定义

Angularjs服务未定义,angularjs,Angularjs,正在构建一个角度应用程序,但服务或工厂未定义错误。特别是“无法读取未定义的setName属性”。我已经去找出我的错误了。甚至改变了我的语法,认为我可能有一些不合适的地方,但仍然抛出了一个未定义的错误 这是控制器: (function() { "use strict"; angular .module("app", []) .controller("mainCtrl", ["$scope", mainCtrl]); function mainCtrl($scope,

正在构建一个角度应用程序,但服务或工厂未定义错误。特别是“无法读取未定义的setName属性”。我已经去找出我的错误了。甚至改变了我的语法,认为我可能有一些不合适的地方,但仍然抛出了一个未定义的错误

这是控制器:

(function() {
  "use strict";
  angular
    .module("app", [])
    .controller("mainCtrl", ["$scope", mainCtrl]);

  function mainCtrl($scope, productService) {

    $scope.testService = productService.setName("Data Service");
  }
}());
以下是服务脚本:

(function() {
  "use strict";
  angular
    .module("app")
    .service("productService", function() {

      var serviceObj = {};
      serviceObj.name = '';
      serviceObj.setName = function(newName) {
        serviceObj.name = newName;
      };
      return serviceObj;
    });
}());
最初,我的服务是:

(function() {
  "use strict";
  angular
    .module("app")
    .service("productService", setName);

  function setName(newName) {
    var serviceObj = {};
    serviceObj.name = '';
    serviceObj.setName = function(newName) {
      serviceObj.name = newName;
    };
    return serviceObj;
  }
}());

我最近遇到了这个问题,似乎在创建控制器之前必须定义函数。我建议采用以下方法:

(function () {
"use strict";

//function
function mainCtrl($scope, productService) {
    $scope.testService = productService.setName("Data Service");
} 

//Controller and Module Init
angular
    .module("app", [])        
    .controller("mainCtrl", mainCtrl);  

//Inject requirements (This is needed for Minification) 
mainCtrl.$inject = ["$scope", "productService"];

}());

我最近遇到了这个问题,似乎在创建控制器之前必须定义函数。我建议采用以下方法:

(function () {
"use strict";

//function
function mainCtrl($scope, productService) {
    $scope.testService = productService.setName("Data Service");
} 

//Controller and Module Init
angular
    .module("app", [])        
    .controller("mainCtrl", mainCtrl);  

//Inject requirements (This is needed for Minification) 
mainCtrl.$inject = ["$scope", "productService"];

}());

将产品服务添加到控制器声明
['$scope',
->
['$scope',productService'
,您缺少内置
$http
服务而不是自定义服务的productService注释(如果不重复),将产品服务添加到控制器声明
['$scope',
->
['$scope','productService'
,您缺少productService的注释(如果不重复)使用内置的
$http
服务而不是定制服务,这是可行的,尽管我很好奇它为什么有效,并将在您发现后继续查找,让我知道。这个问题以前一直困扰着我,因为我认为顺序在JS(或任何功能程序)中都不重要但这一定是与一个角精灵有关。虽然我很好奇它为什么会起作用,但当你发现后,我会继续寻找,让我知道。这个问题之前一直困扰着我,因为我认为顺序在JS(或任何功能程序)中并不重要,但它一定与一个角精灵有关。