我知道这样做是有违背Angularjs规定的写法的。
先说说场景吧。
用户在A页面点击“新增”按钮,window.open出一个B页面,在B页面填完信息后,点击保存,想要回显到A页面。然后连同A页面一些信息进行提交到controller.
因为刚接触Angularjs,所以还是以页面B opener.document.getElementById 设置父页面(A页面隐藏的input值)。
但是却出现页面上input view是改变了,但是实际的model根本没有变化,controller中取到的值都是 undefined ;
想请教下
1.如果这样的写法,应该怎么操作才能使得controller中可以取到隐藏的B页面回传的input的值。
2.如果遵循Angularjs写法,应该怎么变化?
附A页面:
<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);
};
页面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.