2013-06-14 4 views
0

В настоящее время я взаимодействую с google api, используя jsonp, поэтому мне нужна глобальная функция обратного вызова. Как вызвать обновление страницы внутри функции обратного вызова?Как активировать обновление страницы angularjs в глобальной функции обратного вызова?

Я пробовал $timeout и $scope.$apply, но они, похоже, не работают.

В моем контроллере, у меня есть что-то вроде

var App = window.App = angular.module('App', ["App.controllers"]); 
angular.module('App.Controllers', []) 
    .controller("LoginController", ["$scope", function($scope) { 
     window.gplusUserCallback = function(data) { 
      $timeout(function() { 
       $scope.user = data; 
       console.log("gplusUserCallback", $scope.user); 
      }); 
     }; 
    }]); 

Но не кажется $scope.user для запуска обновления. Есть идеи?

+1

Где находится '$ scope? –

+0

Почему '$ scope.user' запускает обновление? – Stewie

+0

У вас есть угловая область действия и вызывается функция $ digest, чтобы инициировать проверку измененных значений и обновлять привязки данных. –

ответ

1

Если вы хотите, чтобы ваша угловая область была обновлена ​​после запуска глобального обратного вызова, вам необходимо вручную обновить область действия.

// If you do have access to your scope via $scope 
$scope.$digest(); 

// If you don't have access to the scope 
var element = document.getElementById('dashboard'); 
// Get the scope for your element where your controller is bound to 
var scope = angular.element(element).scope(); 
scope.$digest(); 
+0

Это не сработало для меня. Разве '$ digest' не был бы таким же, как' $ apply'? На самом деле '$ apply', кажется, лучше, согласно http://jimhoskins.com/2012/12/17/angularjs-and-apply.html – zlog

Смежные вопросы