2012-05-31 11 views
5

He creado mi propio gancho insertImageDialog para permitir la carga de archivos directamente dentro del editor.Pagedown Editor insertimagedialog hook

  $('div#insertImageDialog input[type=file]').ajaxfileupload({ 
       action: $file.attr('data-action'), 
       onStart: function() { 
        $loader.show(); 
       }, 
       onComplete: function(response) { 
        $loader.hide(); 
        if (response.success) { 
         callback(response.imagePath); // <---- oO 
         dialogClose(); 
        } else { 
         alert(response.message); 
         $file.val(''); 
        } 
       } 
      }); 

Esto funciona bien la primera vez que inserto una imagen.

Cada vez después, se produce un error con la siguiente excepción:

Uncaught TypeError: Cannot call method 'removeChild' of null Markdown.Editor.js:1683 commandProto.doLinkOrImage.linkEnteredCallback Markdown.Editor.js:1683 self.initMarkdownEditor.editor.hooks.set.$.ajaxfileupload.onComplete

La carga funciona bien fuera del editor, así que sólo puedo pensar que es algún tipo de problema con la determinación del alcance de la devolución de llamada.

He estado tirando de mi cabello durante la mayor parte del día.

Respuesta

2

La cuestión era doble

  1. No me di cuenta que el gancho se llama a cada vez que el usuario hace clic en el botón de imagen. Esto significaba que en realidad estaba configurando múltiples manejadores de "cambios" para la carga del archivo.
  2. El complemento de carga que estaba usando esperaba que el controlador se registrara una vez (incluso si lo borramos).

He documentado la solución completa de trabajo en mi blog.

+0

He leído su publicación, pero sigo teniendo problemas. Entiendo que se llama al anzuelo cada vez, pero ¿por qué eso configura múltiples manejadores de 'cambios'? –