angular.js - Apabila angular-ueditor sedang digunakan, gambar dimasukkan dan angularmodel tidak dikemas kini selepas pemuatan selesai;
我想大声告诉你
我想大声告诉你 2017-05-15 17:11:01
0
1
823

Apabila menggunakan Editor Baidu, imej yang disisipkan pada mulanya ialah imej yang dimuatkan dan imej yang dimuat naik akan dipaparkan selepas pemuatan berjaya
Apabila imej dimasukkan tanpa sebarang pengubahsuaian, model dalam pengawal kelihatan seperti ini

<p><img class="loadingclass" id="loading_iwwwjn6l" src="http://d.com:12080/Public/backend/lib/ueditor/themes/default/images/spacer.gif" title="正在上传..."/></p>

Walaupun imej telah berjaya dimuat naik dan dipaparkan dalam editor, model tersebut tidak diubah suai hanya selepas mengubah suai sesuatu yang lain dan mencetuskan peristiwa perubahan kandungan ueditor
Dalam perintah udeitor Mendengar untuk perubahan kandungan:

_self.editor.addListener("contentChange", function() {
    ctrl.$setViewValue(_self.editor.getContent());
    if (!_updateByRender) {
      if (!$S.$$phase) {
        $S.$apply();
      }
    }
    _updateByRender = false;
  });

Lihat kod sumber ueditor:

function callback(){
    try{
        var link, json, loader,
            body = (iframe.contentDocument || iframe.contentWindow.document).body,
            result = body.innerText || body.textContent || '';
        json = (new Function("return " + result))();
        link = me.options.imageUrlPrefix + json.url;
        if(json.state == 'SUCCESS' && json.url) {
            loader = me.document.getElementById(loadingId);
            loader.setAttribute('src', link);
            loader.setAttribute('_src', link);
            loader.setAttribute('title', json.title || '');
            loader.setAttribute('alt', json.original || '');
            loader.removeAttribute('id');
            domUtils.removeClasses(loader, 'loadingclass');
        } else {
            showErrorLoader && showErrorLoader(json.state);
        }
    }catch(er){
        showErrorLoader && showErrorLoader(me.getLang('simpleupload.loadError'));
    }
    form.reset();
    domUtils.un(iframe, 'load', callback);
}

Selepas imej berjaya dimuat naik, ubah suai terus src imej pemuatan asal kepada pautan yang dikembalikan, tetapi ini tidak mencetuskan $apply sudut Malah, ia harus dikatakan bahawa changecontent tidak dimulakan, menghasilkan model tidak dikemas kini;

Boleh saya bertanya kepada tuan, bagaimana untuk membuat kemas kini model sudut apabila mengubah suai atribut img src?

Masalah ini telah lama mengganggu saya. Saya melihat bahawa seorang abang besar di blog menambah kelewatan untuk menukar kandungan

 _self.editor.addListener("contentChange", function() {  
    //此处设置一个延迟,防止图片还没有从服务器返回,从而获取到的是loading图片  
    setTimeout(function() {  
      ctrl.$setViewValue(_self.editor.getContent());  
      if (!_updateByRender) {  
        if (!$S.$$phase) {  
          $S.$apply();  
        }  
      }  
      _updateByRender = false;  
    }, 50)  
  });  

Tetapi merawat simptom dan bukannya punca adalah sia-sia jika gambar saya dimuatkan selepas 50ms. . . .

Kod acara pertukaran kandungan tidak ditemui.

我想大声告诉你
我想大声告诉你

membalas semua(1)
小葫芦

Kembali sendiri;
Kaedah 1: Batalkan muat naik imej tunggal dalam konfigurasi dan sebaliknya gunakan berbilang muat naik imej
Kaedah 2: Ubah suai fungsi muat naik mudah dalam ueditor.all.js
Ubah suai imej pemuatan selepas muat naik imej selesai src atribut, selepas memaparkan gambar sebenar, masukkan rentetan kosong pada penghujung untuk memulakan $apply

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