angular.js - jQuery设置input value Angularjs controller 无法获取
習慣沉默
習慣沉默 2017-05-15 16:49:38
0
4
733

我知道这样做是有违背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();
習慣沉默
習慣沉默

membalas semua(4)
过去多啦不再A梦

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:

$scope.add = function() {
        var openCustomer = window.open('B.html');

};

// 这里不用$scope而用window是为了在B页面调用
window.save = function(value) {
    $scope.abv = value;

    alert($scope.abv);
};

Halaman B

//这里直接调用刚才A.js声明的save方法,然后把B页面的值传进去
opener.save(document.getElementById('a').value);
window.close();

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan