Angularjs 为什么我的$emit和$broadcast示例不起作用?
例如:Angularjs 为什么我的$emit和$broadcast示例不起作用?,angularjs,Angularjs,例如: <div ng-controller="ParentCtrl as parent" class="ng-scope"> { { parent.data } } <div ng-controller="SiblingOneCtrl as sib1" class="ng-scope"> { { sib1.data } } </div> </div> <script> function ParentCtr
<div ng-controller="ParentCtrl as parent" class="ng-scope">
{ { parent.data } }
<div ng-controller="SiblingOneCtrl as sib1" class="ng-scope">
{ { sib1.data } }
</div>
</div>
<script>
function ParentCtrl ($scope) {
$scope.$broadcast('parent', 'Some data'); // идет вниз!
}
function SiblingOneCtrl ($scope) {
$scope.$on('parent', function (event, data) {
console.log(data); // ‘Some data’
});
}
</script>
在这个论坛上下载一个示例,人们就可以编写它了
打开控制台,我没有看到任何效果
等待提示..谢谢冷漠的人最有可能发生,因为它在兄弟姐妹中的侦听器创建之前就触发了广播 a不立即广播,例如使用delay$timeout b或以其他方式传递数据,使用原型继承,甚至是在父级上设置并在同级中获取的服务
你很可能想在ng click上播放一些东西,或者其他什么东西,不是吗?在这种情况下,它应该可以正常工作。发生的可能性最大,因为它在创建同级侦听器之前触发了广播 a不立即广播,例如使用delay$timeout b或以其他方式传递数据,使用原型继承,甚至是在父级上设置并在同级中获取的服务
你很可能想在ng click上播放一些东西,或者其他什么东西,不是吗?在这种情况下,它应该可以正常工作。foxx告诉right在parentctrl中使用$timeout进行尝试,如下所示:
function ParentCtrl ($scope,$timeout) {
this.data="r";
$timeout(function(){
$scope.$broadcast('parent', 'Some data'); // идет вниз!
},1000)
}
function SiblingOneCtrl ($scope) {
$scope.$on('parent', function (event, data) {
console.log(data); // ‘Some data’
});
}
对于工作代码,请使用parentctrl中的$timeout进行尝试,如下所示:
function ParentCtrl ($scope,$timeout) {
this.data="r";
$timeout(function(){
$scope.$broadcast('parent', 'Some data'); // идет вниз!
},1000)
}
function SiblingOneCtrl ($scope) {
$scope.$on('parent', function (event, data) {
console.log(data); // ‘Some data’
});
}
对于工作代码,可能是因为它在同级初始化之前触发。使用parentctrl中的$timeout进行尝试。尝试将脚本放在$document中。就绪功能谢谢您,foxx…可以工作…可能是因为它在兄弟姐妹初始化之前启动。使用parentctrl中的$timeout进行尝试。尝试将脚本放入$document中。就绪功能谢谢您,foxx…..可以工作…在$timeout中不需要1000个延迟,即使0毫秒也可以工作$timeout中不需要1000个延迟,即使0毫秒也可以工作