2016-04-29 12 views
5

Ich versuche, eine Google recapcha zu implementieren, ich in der Lage bin, um zu überprüfen Benutzer mit Hilfe der es menschlich ist,

Der reCapcha Code Callback Funktion mit dem Namen ruft " verifyCallback'in meinem Code, Weiter möchte ich eine AngularJS-Funktion aufrufen, die in meinen Controller-Bereich geschrieben wurde.

Hier sind meine Codes so weit -

Haupt Html, ich habe inbegriffen-

<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script> 

Html Teil -

var onloadCallback = function() 
    { 
     grecaptcha.render('loginCapcha', { 
      'sitekey' : 'someKey', 
      'callback' : verifyCallback, 
      'theme':'dark' 

     }); 
    }; 

    var verifyCallback = function(response) 
    { 
     //I get a response if user is able to solve the Capcha challenge 
     console.log(response); 

     //I want to call the function called 'auth' written in my AngularJS controller 
     var scope = angular.element(document.getElementById('#loginCapcha')).scope(); 
     scope.auth(); 
    }; 

    <div id="loginCapcha"></div> 

AngularJS-Controller -

var _myApp = angular.module('homeApp',[]); 

_myApp.controller('loginController',['$scope', 
function($scope){ 

    $scope.auth = function() 
    { 
     console.log("Auth called"); 
    } 
}]); 
+0

Ich denke, eine beste Lösung ist es, die recaptcha JS API direkt zu verwenden anstatt das generische Setup hier zu machen. Es gibt ein paar Recaptcha-Anweisungen, wenn Sie suchen, aber nicht sicher sind, welcher aktuell und/oder fehlerfrei zu diesem Zeitpunkt ist. https://developers.google.com/recaptcha/docs/display#js_api hier ist eine http://vividcortex.github.io/angular-recaptcha/ – shaunhusain

+1

@shaun danke für die Links, ich habe versucht, einen grundlegenden Arbeitscode zu implementieren Ich werde in die angegebenen Links schauen. –

Antwort

5
<div ng-controller='loginController' id='yourControllerElementID'> 

</div> 

Für obiges Szenario Verwendung folgenden Code:

var scope = angular.element(document.getElementById('yourControllerElementID')).scope(); 
scope.auth(); 

Also, Ihre Methode wird wie folgt aussehen:

var verifyCallback = function(response) 
    { 
     //I get a response if user is able to solve the Capcha challenge 
     console.log(response); 

     //I want to call the function called 'auth' written in my AngularJS controller 
     var scope = angular.element(document.getElementById('#yourControllerElementID')).scope(); 
     scope.auth(); 
    }; 
+0

'yourControllerElementID' ist mein Controller-Name oder der Funktionsname in meinem Controller? –

+0

@AniruddhaRaje Aktualisierte Antwort, bitte überprüfen. –

+0

Ich habe den Code bearbeitet, es gibt mir eine - Uncaught ReferenceError: $ Scope ist nicht definiert –

Verwandte Themen