我正在使用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进行图像存储。这是CollectionFS javascript。
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)
});
}
有没有人成功通过这种方式在Meteor.js和collectionFS中使用summernote?
如果是的话,请帮助我。如果这个问题得到解决,我将发布许多meteor.js用户的教程。我相信这将是一个伟大的贡献。
此外,即使您没有使用Meteor.js或CollectionFS,如果您可以投入两美分,也会非常感激。
谢谢!
答案 0 :(得分:0)
除了使用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();
}
});
});
}
});
}