Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 为什么我的$emit和$broadcast示例不起作用?_Angularjs - Fatal编程技术网

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毫秒也可以工作