TypeError:无法读取Object.wo上的null的属性'value'(作为getResponse](recaptcha__en.js:302)at m。$ scope.acessCode(app.js:66)at fn(eval at compile(angular) .min.js:1),:4:218)
var captchaResponse = grecaptcha.getResponse();
console.log(captchaResponse);
if(captchaResponse.length == 0) {
alert("Please verify the captcha before proceeding further.");
return false;
}
答案 0 :(得分:0)
ui.router会再次加载小部件,所以我怀疑你的问题是你调用vcRecaptchaService.getResponse();
正如这里提到的https://github.com/VividCortex/angular-recaptcha/issues/81
getResponse()有一个必须传递给它的参数,widgetId, 当多个recaptcha小部件注册/在同一页面上时。以来 你有一个SPA,即使第一个小部件不再存在,它也是 仍在Google的代码中注册。
您的解决方案是在控制器中创建回调函数
$scope.createCallback = function(widgetId){
$scope.widgetId = widgetId;
};
然后在创建recaptcha时调用create
上的函数 <div vc-recaptcha key="'key'" on-create="createCallback(widgetId)"></div>
然后回到你的控制器,在尝试getresponse时传递widgetId
$scope.Response = vcRecaptchaService.getResponse($scope.widgetId);