CollectionFS, Meteor.js, Summernote (WYSIWYG) и загрузка файлов

Я работаю над проектом, используя Meteor.js, Summernote и Collection FS.

Во-первых, вот мой код.

Template.postSubmit.rendered = function() {
   $('#summernote').summernote({
        height: 400,
        maxHeight:800,
        minHeight:250,
        onImageUpload: function(files, editor, $editable) {
        Images.insert(files[0], function (err, fileObj) {
            editor.insertImage($editable, fileObj.url());    
        });
      }
   });

Вставленное изображение успешно переходит по указанному URL-адресу для хранения изображений. Вот javascript CollectionFS.

Images = new FS.Collection("images", {
  stores: [new FS.Store.FileSystem("images", {path: "~/img"})]
});

Images.allow({
  insert: function() {
    return true;
  },
  update: function() {
    return true;
  },
  remove: function() {
    return true;
  },
  download: function() {
    return true;
  }
});

Мне было интересно, может ли кто-нибудь направить меня в правильном направлении. Мне сказали, что URL-адрес обратного вызова не определен. Итак, меня попросили попробовать этот код, используя функцию setTimeout. Однако мне все равно не повезло.

onImageUpload: function(files, editor, $editable) {
        Images.insert(files[0], function (err, fileObj) {
          setTimeout(function() {
            editor.insertImage($editable, fileObj.url());
          }, 300)
        });
      }

Кому-нибудь удалось таким образом использовать summernote в Meteor.js и collectionFS?

Если это так, пожалуйста, помогите мне. Если это будет решено, я опубликую учебник для многих пользователей meteor.js. Я считаю, что это будет большой вклад.

Кроме того, даже если вы не используете Meteor.js или CollectionFS, если вы можете внести свои два цента, мы будем очень благодарны.

Спасибо!


person Sang Yoo Kim    schedule 12.12.2014    source источник


Ответы (1)


Вот еще одно решение, помимо использования setTimeout:

Template.blogList.rendered = function() {
    var template = this;
    $('#summernote').summernote({
        height: 400,
        maxHeight:800,
        minHeight:250,
        onImageUpload: function(files, editor, $editable) {

            Images.insert(files[0], function (err, fileObj) {
                console.log("after insert:", fileObj._id);
                template.autorun(function (c) {
                  fileObj = Images.findOne(fileObj._id);
                  var url = fileObj.url();
                  if (url) {
                    $("#summernote").summernote("insertImage", fileObj.url(), "Image Title"); 
                    c.stop();
                  }
                });
            });

        }   
    });
}
person daslicht    schedule 20.07.2015
comment
Пришло время удалить ваш отрицательный голос. В отличие от вас вы, я сейчас разместил действительный ответ. - person daslicht; 21.07.2015
comment
круто - рад, что вы можете изменить тип своего сообщения с вопроса (как вы сами сказали в комментарии, который вы удалили ;-) на решение - person kleopatra; 21.07.2015