使用angularJs重新捕获Google数据回调

时间:2017-01-18 10:46:05

标签: angularjs recaptcha

我在angularjsApp中实现了google Captcha。

我有这个HTML

<div class="g-recaptcha" data-sitekey="{{key}}" data-callback="enableBtn()"></div>

在我的控制器中,我有:

$scope.enableBtn = function(){
   $scope.captchaSigned = true;
};
$scope.key = "xyz";

但是没有工作,并在我的控制台返回:

ReCAPTCHA couldn't find user-provided function: enableBtn()

如何使用Angularjs进行数据回调?

5 个答案:

答案 0 :(得分:3)

在你的html put:

<div class="g-recaptcha" data-sitekey="{{key}}" data-callback="enableBtn"></div>

在你的控制器中,输入:

var enableBtn = function(){
   $scope.captchaSigned = true;
};
$scope.key = "xyz";
window.enableBtn = enableBtn;

这应该有效,因为它将绑定控制器中的函数。

答案 1 :(得分:1)

我已使用此库https://github.com/VividCortex/angular-recaptcha

解决了问题

答案 2 :(得分:0)

在控制器中:

window.wrongCaptchaResponse = true;
window.recaptchaResponse = function(key) {
    window.wrongCaptchaResponse = false;
};

在HTML页面中:

<button type="submit" ng-disabled="loginForm.$invalid || wrongCaptchaResponse">Login</button>

答案 3 :(得分:0)

您可以在角度控制器中初始化recaptcha。例如

在控制器内部添加此按钮单击或初始化或超时(如果您在页面加载时需要它)。 :

&#13;
&#13;
function showRecaptcha(){
	if(typeof grecaptcha !='undefined'){
		grecaptcha.render('register-recaptcha', {
	          'sitekey' : 'your_site_key',
	          'callback' : recaptchaCallback,
	        });
	}
}

function recaptchaCallback(resp){
	console.log(11,resp);
}
&#13;
<div  id="register-recaptcha"></div>
&#13;
&#13;
&#13;

答案 4 :(得分:0)

而不是$scope.enableBtn = function(){将函数定义为window.enableBtn = function(){

确保使用data-callback="enableBtn"而不是data-callback="enableBtn()"