2014-10-03 138 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得到一些好主意。