2015-09-17 2 views
1

см - http://jsfiddle.net/U3pVM/18701/Угловая JS широковещательный не проникая внутрь ребенка объем

В консоли, я вижу только «outer1» в журнале, внутренняя сфера не регистрируется. Что-то не хватает?

var app = angular.module("myapp", []); 

app.controller("outer1", function($scope) { 
$scope.$on("newmessage", function() { 
     console.log("outer1"); 
}); 
$scope.$broadcast("newmessage"); 
}); 

ответ

1

Это проблема синхронизации - дети инициализируются после того, как родитель уже уволил $ broadcast. При задержке $broadcast с помощью $timeout, дети будут получать события (update fiddle):

app.controller("outer1", function($scope, $timeout) { 
    $scope.$on("newmessage", function() { 
      console.log("outer1"); 
    }); 
    $timeout(function() { // delay $broadcast using $timeout 
     $scope.$broadcast("newmessage"); 
    }, 0); 
}); 
+0

@Oro Дрори - Круто, спасибо! Помимо использования произвольного тайм-аута/интервала, мы можем сделать трансляцию после того, как дети были инициализированы. –

+0

Зачем вам это нужно? –

+0

И любая специальная причина, по которой тайм-аут «0», я впервые увидел. вы можете объяснить. –