Saya tahu bahawa ini bertentangan dengan peraturan Angularjs.
Mari kita bercakap tentang adegan itu dahulu.
Pengguna mengklik butang "Tambah" pada halaman A, dan window.open membuka halaman B. Selepas mengisi maklumat di halaman B, klik simpan, dan mahu menggemakannya ke halaman A. Kemudian serahkannya kepada pengawal bersama-sama dengan beberapa maklumat di halaman A.
Oleh kerana saya baru menggunakan Angularjs, saya masih menggunakan page B opener.document.getElementById untuk menetapkan halaman induk (nilai input tersembunyi halaman A).
Walau bagaimanapun, nampaknya paparan input pada halaman telah berubah, tetapi model sebenar tidak berubah sama sekali, dan nilai yang diperolehi dalam pengawal semuanya tidak ditentukan
Saya ingin meminta nasihat
1. Jika ia ditulis seperti ini, bagaimana ia harus dilakukan supaya pengawal boleh mendapatkan nilai input yang dikembalikan oleh halaman B tersembunyi.
2. Jika anda mengikuti kaedah penulisan Angularjs, bagaimanakah ia harus berubah?
Halaman A dilampirkan:
<a href="javascript:void(0);" ng-click="add()" >新增</a>
<input id = "abv" ng-model="abv" class="intxt" type="text">
<a href="javascript:void(0);" ng-click="save()" id = "save">保存</a>
A.js:
$scope.add = function(){
var openCustomer = window.open('B.html');
};
$scope.save = function(){
console.log('save ' + $scope.abv);
};
Halaman B:
this.opener.document.getElementById("abv").value = document.getElementById("a").value;
this.opener.document.getElementById("save").click();
Anda hanya perlu mengubah suai input dan kemudian menambah acara menggunakan JQ
$("#cert_valid_from").val(date1).trigger('change');
Terutamanya pencetus simulasi mencetuskan peristiwa perubahan
Kod Rujukan
A.js:
Halaman B
Kini makluman yang anda perlukan tersedia dalam A.js
$scope.abv
.Tetapi perlu diingat bahawa pendekatan ini adalah penyelesaian sepenuhnya dan sangat tidak disyorkan
Sebabnya ialah saya bercadang untuk menggunakan pemalam krom untuk membuat pemalam yang secara automatik membantu saya mengklik butang dan memasukkan perkara Walau bagaimanapun, projek itu dibuat dengan Angular Menetapkan nilai input menggunakan js tidak mencukupi . Saya perlu mengemas kini nilai model, yang merupakan satu pembaziran masa. operasi. . . .
Sial, saya mengambil masa yang lama untuk mencari jawapannya, saya benar-benar bekerja keras untuk mencari jawapannya dicetuskan pada mulanya. Saya fikir ia adalah perubahan, tetapi selepas bekerja keras, saya akhirnya mendapati bahawa ia adalah input $('input').val(123).trigger('input') adalah ok.
Walau bagaimanapun, projek saya adalah lebih rumit rujukan b.html melalui iframe Kedua-dua html mempunyai set jquery dan sudut, jadi jquery b.html perlu digunakan untuk mencetuskan input. pepijat), iaitu window.frames["f1"].contentWindow .$('input').val('55555555555').trigger('input') dan bukannya
$('input',window .frames["f1"].contentWindow.document).val('55555555555 ').trigger('input')
Nilai ngModel tidak dikemas kini/dipaparkan
Rujukan http://www.cnblogs.com/whitewolf/p/ngmodel-zhi-bu-geng-xin-slash-xian-shi.html
Sebab
1. Nilai model tidak memenuhi syarat pengesahan borang, jadi sudut tidak akan memaparkannya
2 Disebabkan mekanisme pewarisan rantai prototaip khas JavaScript, penetapan atribut dalam $scope tidak boleh dikemas kini kepada skop $ ibu bapa
Penyelesaian pantas untuk sebab 2: Tambahkan "." pada nilai atribut ngModel, kemudian pengambilan rantaian prototaip JavaScript akan dimulakan.