我读了
this tutorial,以便将我的AngularJS应用程序与谷歌登录连接起来.我添加了google按钮,如下所示(只需复制粘贴教程):
<Meta name="google-signin-client_id" content="YOUR_CLIENT_ID.apps.googleusercontent.com">
然后添加按钮本身:
<div class="g-signin2" data-onsuccess="onSignIn"></div>
起初我只是从教程中复制了onSignIn方法(这只是一个通用处理程序,所以我没有把它复制到问题中)并将它放在< script> …< / script>中.标签,它的工作原理.我现在想把这个方法放在一个Angular控制器中.所以我创建了一个控制器如下:
app.controller('GoogleCtrl',function() { function onSignIn(googleUser) { var profile = googleUser.getBasicProfile(); console.log('ID: ' + profile.getId()); console.log('Name: ' + profile.getName()); console.log('Image URL: ' + profile.getImageUrl()); console.log('Email: ' + profile.getEmail()); } }
并用div包裹按钮:
<div ng-controller="GoogleCtrl"> <div class="g-signin2" data-onsuccess="onSignIn"></div> </div>
解决方法
如果按照说明操作,最终会得到的是窗口. onSignIn – 尝试在您的浏览器JS控制台中运行它,现在具有从控制器创建该功能所需的相同行为.
app.controller('GoogleCtrl',function() { function onSignIn(googleUser) { var profile = googleUser.getBasicProfile(); console.log('ID: ' + profile.getId()); console.log('Name: ' + profile.getName()); console.log('Image URL: ' + profile.getImageUrl()); console.log('Email: ' + profile.getEmail()); } window.onSignIn = onSignIn; }
请记住,第三方执行的代码(如onSignIn)需要调用$scope.$digest,因此angular可以识别模型更改.