今天要说的这个问题,可能大部分人认为都不是问题。不过,既然遇到了,就记录一下。
设想这样一个场景,系统中有一个接口是用来上传图片的,图片上传成功后会返回结果和最终保存的图片的地址,比如返回结果如下:{status:1,imgUrl:'xxxx'}。用过kindeditor都知道它的返回结果的格式要求是{error:0,url:'xxxx'},如果想重用已有的上传接口,就不得不改写kindeditor。其实改起来也很简单,在源代码kindeditor-all.js中找到如下一段代码:
var uploadbutton = K.uploadbutton({
button : K('.ke-upload-button', div)[0],
fieldName : filePostName,
form : K('.ke-form', div),
target : target,
width: 60,
afterUpload : function(data) {
dialog.hideLoading();
if (data.error === 0) {
var url = data.url;
在if(data.error===0)的前面添加一个你要预处理返回值的逻辑。假设我这里把这个方法叫做parseOfUploadImg,那么我的代码就会是这样:
var uploadbutton = K.uploadbutton({
button : K('.ke-upload-button', div)[0],
fieldName : filePostName,
form : K('.ke-form', div),
target : target,
width: 60,
afterUpload : function(data) {
dialog.hideLoading();
if(self.parseOfUploadImg){
data = self.parseOfUploadImg.call(self,data);
}
if (data.error === 0) {
var url = data.url;
ok,已经改好了,在用的时候只需要在创建富文本框时的options中写上parseOfUploadImg这样一个函数用来预处理返回结果.比如:
{
....
parseOfUploadImg:function(data){
return {error:data.status,url:data.imgUrl};
}
....
}
大功告成:)