[解決済み] jQueryで入力値を設定した後にAngularのモデルを更新する
2022-04-25 07:48:06
質問
こんな簡単なシナリオがあります。
jQueryのval()メソッドで値が変更される入力要素。
jQueryが設定した値でangularモデルを更新しようとしています。簡単なディレクティブを書こうとしましたが、私の望むようにはいきません。
以下がそのディレクティブです。
var myApp = angular.module('myApp', []);
myApp.directive('testChange', function() {
return function(scope, element, attrs) {
element.bind('change', function() {
console.log('value changed');
})
}
})
これがjQueryの部分です。
$(function(){
$('button').click(function(){
$('input').val('xxx');
})
})
とhtmlに記述します。
<div ng-app="myApp">
<div ng-controller="MyCtrl">
<input test-change ng-model="foo" />
<span>{{foo}}</span>
</div>
</div>
<button>clickme</button>
以下は、私が試したフィドルです。
http://jsfiddle.net/U3pVM/743/
どなたか正しい方向を教えてください。
どのように解決するのですか?
ngModel は "input" イベントをリスンするので、あなたのコードを "fix" するには、値を設定した後にそのイベントをトリガーする必要があります。
$('button').click(function(){
var input = $('input');
input.val('xxx');
input.trigger('input'); // Use for Chrome/Firefox/Edge
input.trigger('change'); // Use for Chrome/Firefox/Edge + IE11
});
この特殊な動作の説明については、しばらく前に私が行ったこの回答をご覧ください。 AngularJSは内部的にどのように'onclick'や'onchange'などのイベントをキャッチするのですか? をご覧ください。
しかし、残念ながら、あなたが抱えている問題はこれだけではありません。他の投稿コメントで指摘されているように、あなたのjQuery中心のアプローチは明らかに間違っています。詳しくは、この投稿をご覧ください。 jQueryのバックグラウンドがある場合、どのように「AngularJSで考える」ことができますか? ).
関連
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] jQueryでページを更新するにはどうすればよいですか?
-
[解決済み] jQueryで要素にスクロールする
-
[解決済み] jQueryで入力を無効化/有効化する?
-
[解決済み] jQueryで複数のクラスを持つ要素を選択するにはどうすればよいですか?
-
[解決済み] jQueryで現在のURLを取得する?
-
[解決済み] jQueryでフォームデータをJavaScriptオブジェクトに変換する
-
[解決済み] jQuery Ajax呼び出し後のリダイレクトリクエストを管理する方法
-
[解決済み] セレクトボックスの選択項目を設定する
-
[解決済み】チェックボックスがチェックされているかどうかをjQueryで確認する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] "AngularJSで考える "って、jQueryのバックグラウンドがあれば?[終了しました]
-
[解決済み] チェックボックスのチェック/アンチェックは、jqueryを使用していますか?重複
-
[解決済み] jQueryを使用してテキストボックスの値を取得するには?
-
[解決済み] jQueryでloading spinnerを表示するには?
-
[解決済み] jQueryの検証:デフォルトのエラーメッセージを変更する
-
[解決済み] セレクトボックスの選択項目を設定する
-
[解決済み] jquery input select all on focus
-
[解決済み】iPad版SafariでjQueryを使ってタッチイベントを認識させる方法は?可能でしょうか?
-
[解決済み] jQueryで<input type="text">のonchangeを実装するには?
-
[解決済み] jQueryを使用して文字列から最後の文字を削除する方法は?