angular.js - jQuery は Angularjs コントローラーが取得できない入力値を設定します
習慣沉默
習慣沉默 2017-05-15 16:49:38
0
4
752

これが Angularjs のルールに違反していることは承知しています。
まずは現場の話をしましょう。
ユーザーがページ A で [追加] ボタンをクリックすると、window.open によってページ B が開きます。ページ B に情報を入力した後、[保存] をクリックし、それをページ A にエコーしたいとします。次に、ページ A の情報とともにコントローラーに送信します。
私は Angularjs を初めて使用するため、引き続きページ B opener.document.getElementById を使用して親ページ (ページ A の非表示の入力値) を設定します。
ただし、ページ上の入力ビューは変更されているように見えますが、実際のモデルはまったく変更されておらず、コントローラーで取得される値はすべて未定義です。 アドバイスをお願いします
1. このように書かれている場合、コントローラーが隠しBページから返される入力値を取得するにはどうすればよいですか。
2. Angularjs の記述方法に従う場合、どのように変更する必要がありますか?

ページ A が添付されました:

リーリー

A.js:

リーリー

ページ B:

リーリー

習慣沉默
習慣沉默

全員に返信(4)
过去多啦不再A梦

入力を変更して、JQ を使用してイベントを追加するだけです
$("#cert_valid_from").val(date1).trigger('change');
主にシミュレーションをトリガーして変更イベントをトリガーします

いいねを押す +0
给我你的怀抱

リファレンスコード

A.js:

リーリー

Bpage

リーリー

必要なアラートが A.js $scope.abv で利用できるようになりました。

ただし、このアプローチは完全に回避策であり、強く推奨されないことに注意してください

いいねを押す +0
漂亮男人

理由は、Chrome プラグインを使用して、ボタンのクリックや入力を自動的にサポートするプラグインを作成する予定ですが、プロジェクトは angular で作成されており、入力値を js で設定することはできません。モデル値を更新する必要がありますが、これには非常にコストがかかります。変更ではなく入力をトリガーする必要があることを確認するのに多大な労力がかかり、その後、フレーム間操作の問題を解決するのに多大な労力がかかりました。 。 。 。 。
くそー、答えを見つけるのに長い時間がかかりました。本当に疲れました。
要約すると、js が入力値を変更した後、イベントをトリガーする必要があります。最初は変更だと思いましたが、苦労した結果、最終的に $('input').val(123).trigger('input') が正常であることがわかりました。 🎜🎜# しかし、私のプロジェクトはより複雑です。a.html は iframe を介して b.html を参照します。どちらの HTML にも jquery と angular のセットがあるため、入力をトリガーするには b.html の jquery を使用する必要があります (バグである可能性があります)。 )、つまり
$('input',window.フレーム["f1"].contentWindow.document).val('55555555555').trigger('input')

いいねを押す +0
黄舟

ngModel値が更新・表示されない
参考 http://www.cnblogs.com/whitewolf/p/ngmodel-zhi-bu-geng-xin-slash-xian-shi.html

理由
1. モデルの値がフォームの検証条件を満たしていないため、Angular はそれをレンダリングしません
2. JavaScript の特別なプロトタイプ チェーン継承メカニズムにより、$scope 内の属性の割り当てを親 $scope に更新できません

理由 2 の簡単な解決策: ngModel の属性値に「.」を追加すると、JavaScript プロトタイプ チェーンの取得が開始されます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート