我试图在从 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
您可以通过查看控制台来看到错误Plunk http://plnkr.co/edit/X4iG5iOw1k70fR8NayYc?p=preview.
您对控制器的使用是错误的,该值必须在控制器的范围内设置
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;
})
}
Demo: Plunker http://plnkr.co/edit/9NJFwPbq1u2ZbRYZWbLL?p=preview
如果您想获取控制器实例,则必须手动传递预期的注入值
var $controller = $injector.get('$controller');
var UserCtrl = $controller('UserCtrl', {
$scope: $scope
});
console.log(UserCtrl, 'UserCtrl')
Demo: Plunker http://plnkr.co/edit/hCvbp6qpw8vmbdunh5b3?p=preview
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)