2016-06-10 2 views
1

я сделать запрос GET, как это:AngularJS транслируют возвращает неопределенные

ChartFactory.get({id: $scope.selectedItem}, function(data) { 
    $scope.selectedItem = data; 
    console.log($scope.selectedVal); 


    $rootScope.$broadcast('selectedParams',function(event, selectedVal){}); 
}); 

Я хочу, чтобы транслировать то, что возвращает мою просьбу получить к главному контроллеру, и я делаю что-то вроде этого:

$rootScope.$on('selectedParams', function() { 

    console.log("!!!!!!!!!!!!!!"); 
    console.log($rootScope.selectedVal); 
}) 

но он возвращает undefined. Я что-то упускаю. Не правильно ли я передал сообщение?

После того, как я передал свое сообщение, я хочу использовать свой selectedVal в другом контроллере. Я пробовал вот так:

$scope.$watch('selectedParams', function(){ 
       console.log($scope.selectedParams); 
       console.log("ChangedParams"); 
       ChartData(); 
      },true); 

Это нормально. Действительно ли я использую функцию watch $$$?

ответ

0

Используйте это:

$ rootScope $ телевещание ('selectedParams', {данные: $ scope.selectedVal}).

Первый параметр - это название события. Второе - это данные, которые это событие приносит.

Blockquote $ broadcast (name, args); Отправляет имя события вниз всем дочерним областям (и их детям), уведомляя зарегистрированных слушателей $ rootScope.Scope.

0

Broadcast так:

$rootScope.$broadcast('selectedParams', { selectedParams: $scope.selectedVal }); 

А потом получить его:

$scope.$on('selectedParams', function(event, args) { 

    var mySelectedParam = args.selectedParams; 
    // do what you want to do 
}); 
Смежные вопросы