私は、ng-changeハンドラを持つフォーム要素を持っています。私はプログラムでハンドラをトリガしたいが、スコープを直接調べることはしない。私はこれをやりたいのですが、Chromeの拡張機能を書いているので、ハンドラを得るために '$ scope'に簡単にアクセスすることができません。角度ハンドラをプログラムでトリガする方法は?
私は
$(element).triggerHandler('change')
の明白な選択を試してみましたが、それは動作するようには思えません。ここでの例を参照してください:https://plnkr.co/edit/iaz7trxVT09XWBktGhE9?p=preview(この例では、変更ハンドラが実行されているときにコンソールにいくつかの行を記録していますが、ボタンをクリックするとその行は記録されません)。
ここでは、trigger()やdispatchEventを使用したイベントと火災の手動構築など、さまざまなスレッドで見つかったいくつかのメソッドを試しましたが、役に立たないものです。なぜ私はイベントハンドラがトリガしていないのかよく分かりません。誰も助けることができますか?
他の 'ng-'ディレクティブとは異なり、 'ng-change'は基本要素の' change'イベントにバインドされていません。 'ng-model'の' $ viewChangeListeners'にバインドされているので、あなたがtgeスコープにアクセスできる場合を除き、手動で呼び出す方法はありません。なぜあなたは 'ng-change'を使っていますか? 'ng-input'は代わりに使えますか? –
gkalpak
ありがとうございます。それはたくさん説明します!私はフォームを記入するためにChrome拡張機能を書いているので、ページを制御することはできませんが、これは私のコードがうまくいかない理由を説明しています! – user3759055
実際には、スコープ= angle.element($(element))。scope() 'を使って外部から$ scopeにアクセスすることができますので、' change'をトリガーする必要はありません。 – Icycool