2016-04-29 19 views
5

Sto cercando di implementare un recapcha google, sono in grado di verificare l'utente è umano con l'aiuto di esso,

Il codice reCapcha sta chiamando la funzione di callback di nome ' verifyCallback'in my code, Inoltre desidero chiamare una fucilazione AngularJS scritta nel mio scope controller.

Qui ci sono i miei codici finora -

principale Html, ho inclusi-

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

Html parziale -

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

penso che la soluzione migliore è quella di utilizzare direttamente il Recaptcha JS API invece di fare la configurazione generica qui. Ci sono alcune direttive di ricapitolazione se cerchi in giro ma non sei sicuro di quale sia la più aggiornata e/o libera da bug a questo punto. https://developers.google.com/recaptcha/docs/display#js_api eccone uno http://vividcortex.github.io/angular-recaptcha/ – shaunhusain

+1

@shaun grazie per i link, stavo cercando di implementare un codice di lavoro di base , Guarderò nei tuoi link dati. –

risposta

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

</div> 

Per scenario di cui sopra, l'uso seguente codice:

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

Così, il metodo sarà simile a questa:

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' è il nome del mio controller o il nome della funzione all'interno del mio controller? –

+0

@AniruddhaRaje Risposta aggiornata, si prega di controllare. –

+0

Ho modificato il codice, mi sta dando un - Uncaught ReferenceError: $ scope non è definito –