2016-04-29 14 views
5

से $ scope.function फोन मैं, एक गूगल recapcha लागू करने के लिए इस बात की पुष्टि करने के लिए उपयोगकर्ता यह की मदद से मानव है में सक्षम हूँ कोशिश कर रहा हूँ,AngularJS सादा जे एस समारोह

reCapcha कोड नामित कॉलबैक समारोह बुला रहा है ' मेरे कोड में सत्यापित करें, आगे मैं अपने नियंत्रक दायरे में लिखे गए एंगुलरजेएस फ्यूशन को कॉल करना चाहता हूं।

यहाँ मेरी कोड अब तक कर रहे हैं -

मुख्य HTML, मैं

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

एचटीएमएल included- गए आंशिक -

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 नियंत्रक -

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

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

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

मुझे लगता है कि एक सबसे अच्छा समाधान सीधे recaptcha जे एस एपीआई का उपयोग करने के लिए है जेनेरिक सेटअप करने के बजाय यहां। यदि आप चारों ओर खोज करते हैं लेकिन यह सुनिश्चित नहीं करते कि कौन सा सबसे अद्यतित है और/या इस बिंदु पर बग फ्री है तो कुछ रिकैप्चा निर्देश हैं। https://developers.google.com/recaptcha/docs/display#js_api यहां एक http://vividcortex.github.io/angular-recaptcha/ – shaunhusain

+1

@shaun लिंक के लिए धन्यवाद, मैं एक बुनियादी कार्य कोड लागू करने की कोशिश कर रहा था , मैं आपके दिए गए लिंक देख लूंगा। –

उत्तर

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

</div> 

ऊपर दिए गए परिदृश्य उपयोग के लिए कोड का पालन:

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

तो, अपने विधि इस तरह दिखेगा:

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' मेरे नियंत्रक का नाम या मेरे नियंत्रक के अंदर फ़ंक्शन नाम है? –

+0

@ अनिरुद्धराज अपडेटेड उत्तर, कृपया जांचें। –

+0

मैंने कोड संपादित किया, यह मुझे एक - असीमित संदर्भ देता है: $ scope परिभाषित नहीं किया गया है –

संबंधित मुद्दे