如何将angularJS服务调用到不包含在控制器中的控制器中?

如何将angularJS服务调用到不包含在控制器中的控制器中?,angularjs,Angularjs,如何将angularJS服务调用到不包含在控制器中的控制器中? productCtrl.js var app = angular.module('myApp',[]); app.controller('productCtrl',['$scope','productService', function ($scope,campaignService) { $scope.getLocations = function() { productService.getPo

如何将angularJS服务调用到不包含在控制器中的控制器中?

productCtrl.js

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

app.controller('productCtrl',['$scope','productService', function ($scope,campaignService) 
  {
      $scope.getLocations = function() {
      productService.getPorduct(response,status);
  }
}]);
productService.js

var app = angular.module("myApp", []);

app.service('productService', ['ajaxService', function (ajaxService) {

this.getPorduct = function (successFunction, errorFunction) {

   ajaxService.AjaxGet("http:location.com/product#?clientid=10",    

successFunction, errorFunction);

  };
}]);
ajaxService.js

var app = angular.module("myApp", []);

app.service('ajaxService', ['$http', 'blockUI', function ($http, blockUI) {

this.AjaxGet = function (route, successFunction, errorFunction) {
    blockUI.start();
    setTimeout(function () {
        $http({ method: 'GET', url: route }).success(function (response, status, headers, config) {
            blockUI.stop();
            successFunction(response, status);
        }).error(function (response) {
            blockUI.stop();
            errorFunction(response);
        });
    }, 1000);

}

}]);
当我访问控制器以从url获取结果时,出现以下错误
angular.js:13294错误:[ng:areq]参数'productCtrl'不是函数,未定义

确保您应该为每个应用程序定义一个同名的角度
模块
,然后利用该模块将组件扩展到该模块

在这里,我可以看到您创建模块的三个地方,如

var app = angular.module("myApp", []);
它应该只创建一次,然后像
angular.module(“myApp”)
一样使用,您希望将组件添加到此模块中

productService.js
&
ajaxService.js
应使用最初由
productCtrl.js
创建的模块(假设先加载
productCtrl.js
)。您需要从中更改
productService.js
&
ajaxService.js
代码

var app = angular.module("myApp", []);



最好删除
var-app=angular.module(“myApp”,[])
这一行来自稍后加载的其他js文件,然后他们将使用
app
变量,该变量已加载
myApp
module

仅使用[]调用模块一次,然后使用模块名称

// Creates the module
var app = angular.module("myApp", []);

// call the same module from your other files
var app = angular.module("myApp"); // no []


在具有
[]
的nut shell中,创建新实例,而不具有
[]
的nut shell将检索现有/已创建的实例。确保您的脚本已订购,以便第一次调用始终使用
[]
参数。

Yo,我认为这是因为您正在不断重新定义应用程序。您正在执行var-app=angular.module(“myApp”,[]);在3个不同的地方。我刚从
var-app=angular.module(“myApp”,[])更改;至
var-app=angular.module(“myApp”);`我收到以下错误“%angular.js:68未捕获错误:[$injector:nomod]模块“myApp”不可用!您要么拼错了模块名,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。`@SriChatala您可以添加html,以查看如何引用页面上的JS文件。我正在ASP.Net MVC应用程序中使用。@SriChatala那么,您必须从某个地方引用html页面上的JS文件,页面上的指令引用或通过bundle进行引用。现在我得到
错误:[$injector:unpr]未知提供程序:blockUIProvider
// Creates the module
var app = angular.module("myApp", []);

// call the same module from your other files
var app = angular.module("myApp"); // no []