angular.js - jQuery menetapkan nilai input Pengawal Angularjs tidak dapat
習慣沉默
習慣沉默 2017-05-15 16:49:38
0
4
761

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();
習慣沉默
習慣沉默

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