1.实现非常简单,稍后跟上,废话不说先上图。
2.类的定义:
Ext.define('Ext.ux.XHtmlEditor',{ extend:'Ext.form.field.HtmlEditor', alias:'widget.xhtmleditor', //扩展的属性 uploadConfig:{ url:''//后台上传地址 }, initComponent : function(){ this.callParent(arguments); var me = this; //创建组件 me.initExtFun = function(){ Ext.create('Ext.window.Window',{ title:'插入图片', resizable:false, border:false, modal:true, frame:false, iconCls:'Picture-Sunset', items:[ { xtype:'form', 320, height:70, padding:10, border:false, items:[ { 280, labelAlign:'right', labelWidth:60, xtype:'filefield', name:'file', allowBlank:false, fieldLabel:'选择图片', buttonText:'浏览...' } ] } ], buttons:[ { text:'上传', handler:function(b,e){ //实现上传,完成之后插入带编辑器 var form = b.up('window').down('form'); form.submit({ waitMsg:'正在上传...', clientValidation: true, url:me.uploadConfig.url, success:function(form,action){ //返回图片路径 var path = action.result.message; //将图片插入到光标所在的位置 me.insertAtCursor("<img src='"+path+"' />"); b.up('window').close(); }, failure:function(form,action){ switch (action.failureType) { case Ext.form.action.Action.CLIENT_INVALID: Ext.Msg.alert('提示','客户端验证不通过!'); break; default: Ext.Msg.alert('保存失败,',action.result.message); } } }); } }, { text:'取消', handler:function(b,e){ b.up('window').close(); } } ] }).show(); } var b = Ext.create('Ext.button.Button',{ xtype:'button', iconCls:'Picture-Sunset', tooltip:'上传图片', text:'', listeners:{ click:function(b,e){ me.initExtFun(); } } }); me.getToolbar().add(b); } });
3.用法很简单,首加载在上面的类,然后这样引用。xtype:'xhtmleditor'
{ xtype:'xhtmleditor', uploadConfig:{ url:'/app/uploadImage' } }
4.后台实现上传就省了,方法贼多。但要注意的是后台默认接收图片的name是file,在上面类中有定义,可以随意改。