【问题标题】:AngularJS $broadcast with multiple parametersAngularJS $broadcast 有多个参数
【发布时间】:2016-11-08 04:39:57
【问题描述】:

我可以有一个带有多个参数的$broadcast $on, 类似:

$scope.$broadcast('event',$scope.item, $scope.item);

在任何情况下都可能有这样或类似的东西吗?

【问题讨论】:

    标签: angularjs events broadcast


    【解决方案1】:

    只需将参数放入一个对象中:

    $scope.$broadcast('event', { a: item1, b: item2 })
    

    然后从回调的第二个参数访问它们:

    $scope.$on('event', function(event, opt) {
     // access opt.a, opt.b
    });
    

    或者如果使用 ES2015 语法,您可以解压缩参数:

    $scope.$on('event', (event, {a,b}) => {
     // access them just as a, b
    });
    

    【讨论】:

    • 嗨!请问如何获取 $on 中的参数?
    • @Llg 回调的第二个参数,我已经更新了答案。
    【解决方案2】:

    文档说:

    '可选的一个或多个参数,将传递给事件 听众的

    $rootScope.$emit(event_name, p1, p2, p3);

    【讨论】:

    • 这不是$broadcast 事件。
    【解决方案3】:
    $scope.$broadcast('broadcast-my-event', anyVariable);
    anyVariable = {key1: value1, key2: value2};
    // or
    anyVariable = [value1, value2, value3];
    

    【讨论】:

    • 这里不解释如何使用多个参数
    • 见“Explaining entirely code-based answers”。虽然这在技术上可能是正确的,但它并没有解释为什么它可以解决问题或应该是选择的答案。除了帮助解决问题,我们还应该进行教育。
    猜你喜欢
    • 1970-01-01
    • 2014-03-05
    • 2017-12-01
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 2014-11-09
    • 2015-09-07
    • 1970-01-01
    相关资源
    最近更新 更多