请更新帮助:
尝试了您的建议,问题是当我尝试将值传递给另一个“模块”时。尝试创建服务,但功能不起作用,也许我错过了一些东西。 使用rootScope制作示例:
var informes = angular.module('informes', ['angular-drupal', 'ui.bootstrap']);
informes.controller('InformesCtrl', ['drupal', '$rootScope', '$scope', '$http', 'InformesFtry', function(drupal, $rootScope, $scope, $http, InformesFtry) {
$rootScope.nodeID = function(item){
var item = "hi";
console.log(item);
}
}]);
控制台hi
它在第一个模块中有效,但是...
在其他具有不同页面的模块中...
var nodeInformes = angular.module('node-informes', ['informes']);
nodeInformes.controller('NodeInformesCtrl', ['drupal', '$rootScope', '$scope', '$http', 'InformesFtry', function(drupal, $rootScope, $scope, $http, InformesFtry) {
$scope.nodeID2 = $rootScope.nodeID(item);
console.log($scope.nodeID2);
}]);
控制台:item is Undefined
我试图弄清楚如何将一个函数传递给另一个模块,但这似乎是不可能的。我没有尝试使用相同的模块,但是如果控制器是第一个控制器的子控制器,则它可以工作。
我真的很感谢您可以为我提供的帮助,该帮助将带有参数的函数传递给具有另一个控制器的另一个模块。我正在尝试学习。谢谢!!!
编辑:如果我将firstcontroller添加为依赖项,它将给我未知提供程序...对不起,我的错误。
答案 0 :(得分:0)
在Angular JS中,控制器可以通过三种方式与其他控制器进行通信,而任何其他方法都可能引起麻烦:
使用服务
:将服务用作控制器之间的中介:
function MyService() {
this.MyObject = {};
}
function ctrl1(MyService) {
Myservice.MyObject = {
someData: "someValue"
};
}
function ctrl2(MyService) {
$scope.someValue = MyService.MyObject.someData;
}
使用事件系统
function ctrl1($rootScope) {
$rootScope.$broadcast("my-event", {someData: "someValue"});
}
function ctrl2($scope) {
$scope.$on("my-event", function(event, params) {
$scope.someData = params.someData;
});
}
范围继承
<div ng-controller="ctrl1">
<div ng-controller="ctrl2">
</div>
</div>
function ctrl1($scope) {
$scope.someData = "someValue";
}
function ctrl2($scope) {
console.log($scope.$parent.someData); //"someValue"
}