2013-04-24 3 views
3

onload 콜백에서 스크립트를로드 한 후 컨트롤러 상태를 업데이트하려고합니다. 을 만들 수없는 것스크립트 온로드에서 각도 컨트롤러 호출

function OnLoadCallback() {   
     var $injector = angular.bootstrap(document, ['app']); 
     // load required gapi APIs   
     var $controller = $injector.get('$controller');   
     var UserCtrl = $controller('UserCtrl'); 
     UserCtrl.user.apiLoaded = true;   
}; 

:

나는 구글 클라이언트 API로드 : 다음 OnLoadCallback에서

<script src="https://apis.google.com/js/client.js?onload=OnLoadCallback"></script> 

내가하려고 수동으로 부트 스트랩 AngularJS와를 내 컨트롤러에 설정 상태를 설정 컨트롤러에 $ scope가 주입되었습니다. 전화 $controller('UserCtrl')이 실패로 :

Uncaught Error: Unknown provider: $scopeProvider <- $scope

Plunk에 콘솔을 확인하여 오류를 볼 수 있습니다.

답변

5

컨트롤러의 귀하의 사용은, 값이

function OnLoadCallback() { 
    //gapi.client.setApiKey('XXXXXXXXXXXX'); 
    //gapi.client.load('drive', 'v2', function() { 
    var $injector = angular.bootstrap(document, ['app']); 
    console.log('Angualar bootstrap complete');   


    var $scope = angular.element('body').scope(); 
    console.log('Find scope', $scope) 

    $scope.$apply(function(){ 
    $scope.user.apiLoaded = true; 
    }) 
} 

데모 컨트롤러의 범위에서 설정해야합니다 잘못된 것입니다 : 당신이 컨트롤러 인스턴스를 얻고 싶은 경우에 Plunker

, 당신은해야합니다 직접 분사 예상 값을 전달

var $controller = $injector.get('$controller');   
    var UserCtrl = $controller('UserCtrl', { 
    $scope: $scope 
    }); 
    console.log(UserCtrl, 'UserCtrl') 

데모 : Plunker