【问题标题】:calling an event in modal controller在模态控制器中调用事件
【发布时间】:2016-07-21 09:25:22
【问题描述】:

我的 mainController 上有一个 $scope.$on 回调函数。无论我从每个控制器中调用它,它都能完美运行。但是当我在打开 modal 后从 modalController 调用它时,它不起作用:

define(['app', 'jquery'], function (app, $) {
    app.controller('MainViewControllerUser',
        function ($scope, $location, $rootScope, $interval, MainViewFactoryUser){
        $scope.$on('loadingPage', function (event, value) {
            $scope.chartLoading = value;
        });
}
});

//-----------主控制器结束

 define(['app', 'underscore'], function (app, _) {
        app.controller('advertisementController',
            ['$scope', '$location', '$rootScope', '$interval', 'toaster', 'advertisementFactory', '$modal',
                function ($scope, $location, $rootScope, $interval, toaster, advertisementFactory, $modal) {
                $scope.$emit('loadingPage', true);

    }
    ]);



  app.controller('addClientCrtl',
            ['$scope', '$modalInstance', 'toaster', 'advertisementFactory',
                function ($scope, $modalInstance, toaster, advertisementFactory)
    {
                    $scope.$emit('loadingPage', true);

    }
    ]);



   });

advertisingController 中的 $scope.$emit('loadingPage', true); 运行良好,但在 addClientCrtl 中不起作用。我必须引用模态控制器在 adviertisementController 中定义并在其中调用

【问题讨论】:

    标签: javascript angularjs emit


    【解决方案1】:

    你可以试试$rootScope,而不是$scope:

    $rootScope.$on('loadingPage', function ({
    });
    
    $rootScope.$emit('loadingPage', true);
    

    【讨论】:

    • 或简单的$rootScope.$emit('loadingPage', true);,因为如果父级在同一范围内调用子控制器,$rootscope 将自动解析为父级的 $scope
    猜你喜欢
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 2022-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 2012-02-10
    相关资源
    最近更新 更多