示例:
<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>
在此论坛上下载示例,人们将其编写为
打开控制台,我没有看到任何效果 等待提示..谢谢你无动于衷的人答案 0 :(得分:4)
最有可能发生,因为它甚至在兄弟姐妹的监听器被创建之前触发广播。
a)不要立即广播,例如使用延迟($timeout
)..
b)或以其他方式传递数据,使用原型继承甚至服务(您在父级中设置并在兄弟中获取)
c)你最有可能想要用ng-click或者其他东西播放一些东西,不是吗?在这种情况下,它应该可以正常工作。答案 1 :(得分:4)
foxx告诉右边在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’
});
}
工作代码