Javascript 如何从模块依赖项(另一个模块)调用函数
我想为分页创建单独的模块,因为我需要它在不同的模块中重用,但我不知道如何从模块依赖项(另一个模块)调用函数 这是我的主要模块:Javascript 如何从模块依赖项(另一个模块)调用函数,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我想为分页创建单独的模块,因为我需要它在不同的模块中重用,但我不知道如何从模块依赖项(另一个模块)调用函数 这是我的主要模块: var App = angular.module('search', ['pagination']); App.controller('MainController', ['$scope', '$pagination' function($scope, $pagination) { $scope.testFunction(); //function from
var App = angular.module('search', ['pagination']);
App.controller('MainController', ['$scope', '$pagination' function($scope, $pagination) {
$scope.testFunction(); //function from pagination module controller
}])
这是我的分页模块:
var App = angular.module('pagination', []);
App.controller('PaginationController', ['$scope', function($scope) {
$scope.testFunction = function(){
console.log("pagination module");
}
}])
var pagination = angular.module('pagination', []);
//declare your pagination service here
pagination.factory('PaginationSvc', [function(){
return {
testFunction:testFunction
};
function testFunction(){
console.log('This is from pagination module');
}
}])
我得到一个错误:
Error: [$injector:unpr] Unknown provider: $paginationProvider <- $pagination
错误:[$injector:unpr]未知提供程序:$paginationProvider无法在控制器中插入控制器。您的分页
模块需要声明将注入控制器的服务或工厂或提供商
您应该创建分页指令,并将其插入需要的位置。您可能会从中得到一些好主意。要跨两个模块共享资源,请声明工厂或服务
假设您有一个搜索模块:
//you inject your pagination module here
var searchModule = angular.module('search', ['pagination']);
//and you ALSO need to inject your pagination's service into your controller
searchModule.controller('MainController', ['$scope', 'paginationSvc' function($scope, paginationSvc) {
//function from pagination module controller
paginationSvc.testFunction();
}])
以及您的分页模块:
var App = angular.module('pagination', []);
App.controller('PaginationController', ['$scope', function($scope) {
$scope.testFunction = function(){
console.log("pagination module");
}
}])
var pagination = angular.module('pagination', []);
//declare your pagination service here
pagination.factory('PaginationSvc', [function(){
return {
testFunction:testFunction
};
function testFunction(){
console.log('This is from pagination module');
}
}])
a可能会有所帮助:D您尚未声明名为$pagination
的服务(提供者)。那在哪里?你不能注射不存在的东西。为什么您要在分页模块中创建一个控制器,但却被注入到另一个控制器中?您能否发布一些示例来说明如何执行此操作?这里有很多:。不要在分页模块中创建控制器,而是创建一个服务/工厂(并将其命名为其他名称…角度模块通常以“$”开头,建议不要自己创建