2016-11-21 19 views
-1

JavaScriptから角度コントローラーを呼び出そうとしています。これは私がAngularを何でも使った初めてのことです。少し失われています!jquery/javascriptから関数を呼び出す - 未定義のエラー

私はこの例に続いてきました:

http://dotnet-concept.com/Tips/2015/6/5798829/How-to-call-angularJS-function-from-javascript-jquery

をしかし、私はこのエラーを取得しています:

Uncaught TypeError: Cannot read property 'TestAngularMethod' of undefined(…)

は当初、私はそこに自分のコードを持っていたが、私はそれを剥奪しましたこの例題を最初に試してみるのは全力を尽くしていますが、私は運がありません。

誰かが間違っているのを誰でも見ることができますか?

HTML

<div class="continueClass" id="divID" runat="server" ng-controller="TestController" ng-if="payment.type == 'PayPal' || payment.type == 'WorldPay'"> 
     <asp:Button runat="server" Text="Continue" OnClick="Continue_Click"/> 
    </div> 

はJavaScript

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

    myApp.controller('TestController', ["$scope", function ($scope) { 
     $scope.TestAngularMethod = function() { 
      alert('Hello you are calling angular js method.'); 
     } 
    }]); 

アンギュラ

angular.element(document.getElementById('divID')).scope().TestAngularMethod(); 

私はせずに、これらの見てきました私自身の問題を考え出すのいずれかの運:

Call angularjs function using jquery/javascript

AngularJS. How to call controller function from outside of controller component

Call Angular Function with Jquery

ありがとう!

+1

とにかくこれを実行する必要がありますなぜ?あなたは一般的にコントローラーの外からコントローラー機能を呼び出すことは想定されておらず、何をしようとしていても、より良い解決策が用意されている可能性があります。 – Fissio

+0

成功したときにページに追加する従来のajax呼び出しがあります。そのIDが存在するかどうかを確認してから、角度コントローラーを呼び出すことができるようにする必要があります – hlh3406

+0

なぜ落選ですか? – hlh3406

答えて

2

@Fissioは右であるにも関わらず...あなたはこのコードを試すことができます。

EDITED

JAVASCRIPT

var scope = angular.element('[id=divID]').scope(); 

if(scope){ //check whether the div exist 
    scope.TestController.TestAngularMethod(); //should execute your method 
} 
else{ 
    /* code if scope doesn't exist, div, probably removed because 
    payment.type == 'PayPal' || payment.type == 'WorldPay' is probably false /* 
} 
+0

残念ながら同じエラーが発生します:/ – hlh3406

+0

Uncaught TypeError:Undefined(...)の 'TestController'プロパティを読み取ることができません – hlh3406

+0

Webブラウザでhtmlを調べ、 'id = "divID"はそこにあります。 'ng-if =" payment.type == 'PayPal' || payment.type == 'WorldPay' "' 'が' false'の場合、divがDOMから削除され、おそらくそのエラー。 私の答えは編集を参照してください。 – lealceldeiro

関連する問題