首页 > 解决方案 > 如何使用 AngularJs $emit 正确发送事件

问题描述

我想在某个时刻将数据从一个控制器发送到另一个控制器。在发布之前,我已经查看了文档并在 Google 上搜索了解决方案。但似乎无法让它正常工作。

我知道 $emit 用于在作用域层次结构上发送事件,而 $braodcast 用于向下电报。

var app = angular.module('App.Controllers', ['ui.bootstrap'])
    .controller('FordelaPaBetankandeCtrl', 
        ['$rootScope', '$scope', 
            function ($rootScope, $scope) {

            $scope.$on("delatYrkande", function (selectedValue) {

            });

        }])
        .controller('UtskottCtrl',
            ['$rootScope', '$scope'
                function ($rootScope, $scope) {

                }])
        .controller('TidlinjeCtrl',
            ['$rootScope', '$scope'
                function ($rootScope, $scope) {

                }])
        .controller('UserInfoCtrl', ['$scope',
            function ($scope){

            }])
        .controller('VisaSammantradesplanCtrl', ['$rootScope', '$scope',
            function ($rootscope, $scope) {

            }])
        .controller('HanteraGrunddokumentCtrl',
            ['$rootScope', '$scope',
                function ($rootScope, $scope) {

                    $scope.Emit = function (selectedValue) {

                        $scope.$emit("delatYrkande", selectedValue);
                    }

                }]);

标签: angularjseventsemit

解决方案


一种方法是从 $rootScope 广播:

$scope.Emit = function (selectedValue) {
    ̶$̶s̶c̶o̶p̶e̶.̶$̶e̶m̶i̶t̶(̶"̶d̶e̶l̶a̶t̶Y̶r̶k̶a̶n̶d̶e̶"̶,̶ ̶s̶e̶l̶e̶c̶t̶e̶d̶V̶a̶l̶u̶e̶)̶;̶
    $scope.$root.$broadcast("delatYrkande", selectedValue);
}

有关详细信息,请参阅


推荐阅读