2014-09-11 80 views
2

嘗試瞭解angularjs的$ emit和$ broadcast和$ on事件,理解了理論部分。但無法理解實際的東西。

請看看這個, 爲什麼我沒有得到的console.log消息

的HTMl

<div ng-app="demo"> 
    <div ng-controller="ParentCtrl as parent" class="ng-scope"> 
    {{ parent.data }} 
    <div ng-controller="SiblingOneCtrl as sib1" class="ng-scope"> 
     {{ sib1.data }} 
    </div> 
</div> 
</div>  

JS

var app = angular.module('demo', []); 

app.controller('ParentCtrl',function($scope) { 

    $scope.$broadcast('parent', 'Some data'); // going down! 

}); 

app.controller('SiblingOneCtrl',function($scope) { 

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

}); 

Fiddle Demo

回答

1

代碼沒有什麼錯,除了廣播發生在子控制器有機會實例化之前。使用超時按http://jsfiddle.net/hadx9zys/

setTimeout(function() { 
    $scope.$broadcast(... 
}, 1000); 
+0

對不起,忘了加上參考鏈接,我把它從:http://toddmotto.com/all-about-angulars-emit-broadcast-on-publish-subscribing/那麼你的意思是,他做錯了嗎?而且你也可以告訴我,在什麼情況下,我們必須使用這些東西 – 2014-09-11 10:53:23

相關問題