首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS $broadcast

AngularJS $broadcast
EN

Stack Overflow用户
提问于 2016-04-07 10:28:05
回答 3查看 337关注 0票数 0

请在我的问题上帮助我。当我从父控制器调用并捕获子控制器时,为什么函数$broadcast不工作?

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular.min.js"></script>
    <script>
        var app = angular.module('app', []);
        app.controller('ctrl1',
                function ($scope) {
                    $scope.$broadcast('parent', 'Some data');
                });

        app.controller('ctrl2',
                function ($scope) {
                    $scope.$on('parent', function (event, data) {
                        console.log(data); // 'Some data'
                    });
                });
    </script>
</head>
<body>
<div ng-controller="ctrl1">
    <div ng-controller="ctrl2">
    </div>
</div>
</body>
</html>

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-07 11:14:36

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular.min.js"></script>
    <script>
        var app = angular.module('app', []);
        app.controller('ctrl1',
                function ($scope) {
                    $scope.$on("ready",function(){
                      $scope.$broadcast('parent', 'Some data');
                    });

                });

        app.controller('ctrl2',
                function ($scope) {
                    $scope.$on('parent', function (event, data) {
                       alert(data); // 'Some data'
                    });
                    $scope.$emit('ready');
                });
    </script>
</head>
<body>
<div ng-controller="ctrl1">
    <div ng-controller="ctrl2">
    </div>
</div>
</body>
</html>
票数 4
EN

Stack Overflow用户

发布于 2016-04-07 10:44:59

改变$scope.$broadcast('parent', 'Some data');

代码语言:javascript
复制
 $scope.$broadcast('parent', {message:'Some data'});
票数 1
EN

Stack Overflow用户

发布于 2016-04-07 10:55:33

我用你的代码做了一个小提琴。当听众还没准备好的时候,你只是在广播你的消息。

controller2准备好收听时,只需广播您的消息即可。

代码语言:javascript
复制
var app = angular.module('app', []);
app.controller('ctrl1',
  function($scope, $timeout) {
    $timeout(function() {
      $scope.$broadcast('parent', 'Some data');
    }, 0)
  });

app.controller('ctrl2',
  function($scope) {
    $scope.$on('parent', function(event, data) {
      console.log(event, data); // 'Some data'
    });
  });

希望这能有所帮助

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36473445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档