我们正在尝试使用phonegap onsen 和 angularJS 开发一个应用程序。
我正在尝试从不同的 Controller 调用函数。我看过很多关于如何执行此操作的文档,例如 this
但由于某些原因,它对我不起作用。这是到目前为止我的代码。
module.run(function ($rootScope) {
$rootScope.$on('some-event-here', function (event, data) {
console.log('1');
$rootScope.$emit('show-dialog-of-some-event', data);
//I also tried
//$rootScope.$broadcast('show-dialog-of-some-event', data);
});
});
module.controller('controller1', ['$scope', '$http', function($scope, $http) {
$scope.proceed = function() {
console.log('0');
$scope.$emit('some-event-here', {});
}
}]);
module.controller('controller2', ['$scope', '$http', function($scope, $http) {
$scope.$on('show-dialog-of-some-event', function (event, data) {
console.log('2');
ons.createDialog('some-dialog.html').then(function(dialog) {
//some code here
});
});
}]);
它在控制台上显示“0”和“1”,但不显示“2”。
这可能是一个简单的问题,但我似乎无法找到我的代码的问题。
提前致谢。
最佳答案
我认为可能发生的情况是,您在controller2的本地范围(即$scope)中为事件“show-dialog-of-some-event”声明了一个事件处理程序。您在 $rootScope 中发出一个事件。发出的事件向上冒泡而不是向下冒泡,因此事件“show-dialog-of-some-event”不会从 $rootScope“向下冒泡”到 $scope。您可能想在根范围上定义“show-dialog-of-some-event”的事件处理程序,例如
$rootScope.$on('show-dialog-of-some-event', function(e,d) {});
关于javascript - AngularJs从不同 Controller 调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31041733/