【问题标题】:How to send events with AngularJs $emit properly如何使用 AngularJs $emit 正确发送事件
【发布时间】:2020-03-26 11:24:34
【问题描述】:

我想在某个时刻将数据从一个控制器发送到另一个控制器。在发布之前,我已经查看了文档并在 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);
                    }

                }]);

【问题讨论】:

    标签: angularjs events emit


    【解决方案1】:

    一种方法是从 $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);
    }
    

    有关详细信息,请参阅

    【讨论】:

    • $broadcast 不是只向下传输吗?我试图到达的控制器是第一个控制器,而发射控制器是最后一个。试过了,可惜没用。
    • 从 $rootScope 向下广播到所有子作用域。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 2015-07-27
    • 2018-08-15
    • 2018-11-24
    • 2022-10-20
    • 2016-01-19
    相关资源
    最近更新 更多