请在我的问题上帮助我。当我从父控制器调用并捕获子控制器时,为什么函数$broadcast不工作?
<!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>
发布于 2016-04-07 11:14:36
<!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>发布于 2016-04-07 10:44:59
改变$scope.$broadcast('parent', 'Some data');
至
$scope.$broadcast('parent', {message:'Some data'});发布于 2016-04-07 10:55:33
我用你的代码做了一个小提琴。当听众还没准备好的时候,你只是在广播你的消息。
当controller2准备好收听时,只需广播您的消息即可。
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'
});
});希望这能有所帮助
https://stackoverflow.com/questions/36473445
复制相似问题