2014-10-03 133 views
0

我想创建一个独立的分页模块,因为我需要它在不同的模块重用,但我不知道该怎么称呼从模块依赖的函数(另一个模块)角模块依赖

这里我的主要模块:

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"); 
    } 
}]) 

我得到错误:

Error: [$injector:unpr] Unknown provider: $paginationProvider <- $pagination 
+1

您还没有宣布服务(提供者)称为“$分页”。哪里是?你不能注入不存在的东西。为什么在分页模块中创建一个控制器,只能将其注入另一个控制器? – Ian 2014-10-03 07:40:58

+0

你可以发布一些例子如何做到这一点? – Egizeris 2014-10-03 07:42:37

+0

这里有很多:https://docs.angularjs.org/guide/services。不要在分页模块中创建一个控制器,而要创建一个服务/工厂(并将其命名为其他名称)。角模块通常以“$”开头,建议不要自己做 – Ian 2014-10-03 07:44:30

回答

0

要跨两个模块共享资源,请声明工厂或服务。

假设你有一个搜索模块:

//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 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'); 
} 
}]) 

也许little plnkr将帮助:d

0

您无法在控制器中注入控制器。你的pagination模块需要声明一个服务或工厂或提供者,它们将被注入到你的控制器中。

See docs here.

0

您应该创建一个分页指令,并插入在你需要它。你可能会从this post得到一些好主意。