谷歌reCaptcha即时通讯使用ui.router在角度js中获得第二个错误

时间:2017-02-10 07:35:29

标签: javascript angularjs nodes

  

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;
}

1 个答案:

答案 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);