javascript - AngularJs从不同 Controller 调用函数

标签 javascript angularjs onsen-ui

我们正在尝试使用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/

相关文章:

javascript - 使用chrome和javascript另存为pdf

android - 同一应用中的 ons-split-view 和 ons-sliding-menu

javascript - 将自定义元素添加到 ngRepeat 列表

javascript - 如何将 angularJS 与 mongoDB 一起使用?

angularjs - 如何在 iOS 中使用 Cordova 文件传输插件下载文件

JavaScript 不会触发 CSS 转换

javascript - 日期 fns 的 isSameOrBefore 实现

javascript - Googlebot 和空 CORS 响应

javascript - 禁用输入时自动选择表单

javascript - AngularJS $routeParams 未定义,但属性存在