我试图在从onload回调加载脚本后更新控制器的状态。
我加载了Google客户端API:
<script src="https://apis.google.com/js/client.js?onload=OnLoadCallback"></script>
然后在OnLoadCallback中我尝试手动引导AngularJS并将设置状态设置为我的控制器:
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;
};
似乎无法创建一个注入了$ scope的控制器。当呼叫$controller('UserCtrl')
失败时:
未捕获错误:未知提供者:$ scopeProvider&lt; - $ scope
您可以通过查看此Plunk中的控制台来查看错误。
答案 0 :(得分: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