如何从另一个控制器访问一个控制器的功能。
这是两个控制器,monthlyOptionsController和annualController。
myapp.controller("monthlyOptionsController", ['$scope','$injector', function($scope){
$scope.initializeMonthlyCell = function(monthh){
}
}]);
myapp.controller("yearlyController", ['$scope','$injector', function($scope){
$scope.yearlyFunc = function(monthh){
//here i want to access initializeMonthlyCell function
// like this initializeMonthlyCell(monthNumber);
}
}]);
在annualFunc函数中我想访问initializeMonthlyCell函数/ 我怎样才能做到这一点。可能是这个重复的问题。但有人告诉我我该怎么做?
答案 0 :(得分:3)
有两种方法:
在服务中创建initializeMonthlyCell并将其注入您的控制器以重复使用。
使用$ on,$ emit,$ broadcast在控制器范围之间进行通信。
使用第一种方法的示例代码(在您的情况下更推荐)
myapp.factory("dateService",function(){
return {
initializeMonthlyCell : function (month){
}
};
});
myapp.controller("monthlyOptionsController", ['dateService','$scope','$injector', function(dateService,$scope){
$scope.initializeMonthlyCell = function(month){
return dateService.initializeMonthlyCell(month);
}
}]);
myapp.controller("yearlyController", ['dateService','$scope','$injector', function(dateService,$scope){
$scope.yearlyFunc = function(monthh){
// call dateService.initializeMonthlyCell
}
}]);
答案 1 :(得分:1)
我认为编写服务的最佳方法是在两个控制器中注入以共享数据。
myapp.service('Monthly', function() {
return {
initializeMonthlyCell: function(month) {
return month;
}
}
});
myapp.controller("monthlyOptionsController", function($scope) {
});
myapp.controller("yearlyController", function($scope, Monthly) {
$scope.yearlyFunc = function(monthh){
return Monthly.initializeMonthlyCell(monthh);
}
});