如何对 vcRecaptchaService.execute() 使用 .then 方法?
How to use .then method for vcRecaptchaService.execute()?
我正在使用 anuglar-recaptcha 将 Google Invisible Recaptcha 添加到我的登录表单
我面临的问题是,在调用 vcRecaptchaService.execute 之后,如果我打印 recaptcha_reponse
,我将看到 undefined
作为输出。但是,如果我在几秒钟后使用测试函数 printRecaptchaReponse
打印 recaptcha_reponse
,我将看到 recaptcha_reponse
被打印出来。
这里的问题是,库函数 vcRecaptchaService.execute()
不是 returning $promise
。它实际上 returning none
有什么办法可以做到这一点吗?
问题是什么:
// 1. Call this function from html first
$scope.testRecaptchaExecute = function() {
vcRecaptchaService.execute($scope.widgetId);
console.log($scope.user.recaptcha_reponse);
// undefined :-(
return();
}
// 2. Call this function from html few seconds after testRecaptchaExecute() is called
$scope.printRecaptchaReponse = function() {
console.log($scope.user.recaptcha_reponse);
//JVRk4cZ4J_RluoH2
}
我想要什么:
像,
vcRecaptchaService.execute().then(ret => { //do something here })
此代码的问题是 vcRecaptchaService.execute 不要 return 承诺。此代码无效
问题总结
vcRecaptchaService.execute()
如何使用.then
方法?
您可以尝试使用此工作代码 recaptcha
Javascript
$scope.captcha = {
response: null,
widgetId: null,
modelKey: 'test key',
size: 'normal',
setResponse: function (response) {
$scope.captcha.response = response;
},
setWidgetId: function (widgetId) {
$scope.captcha.widgetId = widgetId;
},
cbExpiration: function () {
vcRecaptchaService.reload($scope.captcha.widgetId);
$scope.captcha.response = null;
}
}
Html
<div ng-model="form.recaptcha"
size="captcha.size"
vc-recaptcha theme="'light'"
key="captcha.modelKey"
on-create="captcha.setWidgetId(widgetId)"
on-success="captcha.setResponse(response)"
on-expire="captcha.cbExpiration()"
required>
</div>
<p ng-show="!form.recaptcha" class="error">Please resolve the captcha</p>
我正在使用 anuglar-recaptcha 将 Google Invisible Recaptcha 添加到我的登录表单
我面临的问题是,在调用 vcRecaptchaService.execute 之后,如果我打印 recaptcha_reponse
,我将看到 undefined
作为输出。但是,如果我在几秒钟后使用测试函数 printRecaptchaReponse
打印 recaptcha_reponse
,我将看到 recaptcha_reponse
被打印出来。
这里的问题是,库函数 vcRecaptchaService.execute()
不是 returning $promise
。它实际上 returning none
有什么办法可以做到这一点吗?
问题是什么:
// 1. Call this function from html first
$scope.testRecaptchaExecute = function() {
vcRecaptchaService.execute($scope.widgetId);
console.log($scope.user.recaptcha_reponse);
// undefined :-(
return();
}
// 2. Call this function from html few seconds after testRecaptchaExecute() is called
$scope.printRecaptchaReponse = function() {
console.log($scope.user.recaptcha_reponse);
//JVRk4cZ4J_RluoH2
}
我想要什么: 像,
vcRecaptchaService.execute().then(ret => { //do something here })
此代码的问题是 vcRecaptchaService.execute 不要 return 承诺。此代码无效
问题总结
vcRecaptchaService.execute()
如何使用.then
方法?
您可以尝试使用此工作代码 recaptcha
Javascript
$scope.captcha = {
response: null,
widgetId: null,
modelKey: 'test key',
size: 'normal',
setResponse: function (response) {
$scope.captcha.response = response;
},
setWidgetId: function (widgetId) {
$scope.captcha.widgetId = widgetId;
},
cbExpiration: function () {
vcRecaptchaService.reload($scope.captcha.widgetId);
$scope.captcha.response = null;
}
}
Html
<div ng-model="form.recaptcha"
size="captcha.size"
vc-recaptcha theme="'light'"
key="captcha.modelKey"
on-create="captcha.setWidgetId(widgetId)"
on-success="captcha.setResponse(response)"
on-expire="captcha.cbExpiration()"
required>
</div>
<p ng-show="!form.recaptcha" class="error">Please resolve the captcha</p>