一、下载ueditor

地址:http://ueditor.baidu.com/website/

二、将ueitor资源引入自己的项目

在index.html中引入ueditor.config.js、ueditor.all.js、语言包(例如中文)zh-cn.js

三、编写Ext富文本组件

首先想好自己的组件中是否还需要包含Ext的组件,本组件不需要,所以继承Ext.Component进行开发

根据ueditor文档,ueditor是script标签进行初始化,所以将此组件标记为script

autoEl:{
tag:'script',
type:'text/plain'
},

初始化ueditor,组件的ue属性接收

onRender:function(){
var me = this;
me.callParent(arguments);
//初始化Ueditor
me.ue=UE.getEditor(me.getId(),Ext.apply(
{
//此处可以添加ueidot默认的配置
},me.ueditorConfig));
//当Ueditor 内容改变时,传回viewModel,实现双向绑定
me.ue.on("contentChange",function(){
me.publishState("value",me.ue.getContent());
me.isSet=true;
})
},

实现数据的双向绑定(set和get)

set:

setValue:function(value){
var me=this;
//避免Ueditor内容更改时再又重新赋值
if(me.isSet){
me.isSet=false;
}
else{
me.ue.ready(function(){
me.ue.setContent(value, false);
});
}
},

get:

ueitor内容改变时,应该实时传递给它绑定的model,所以此处使用ueitor的contentChange事件,并用publishState方法更改model

实现组件的销毁

Ext.Component关闭时,会调用onDestroy方法,所以我们重新此方法,在组件关闭的同时销毁ueditor

onDestroy:function(){
var me = this;
me.callParent(arguments);
if (me.rendered) {
try {
me.ue.destroy();
delete me.ue;
} catch (e) { }
}
}

封装ueditor常用方法

//给Ueditor赋值
setValue:function(value){
var me=this;
//避免Ueditor内容更改时再又重新赋值
if(me.isSet){
me.isSet=false;
}
else{
me.ue.ready(function(){
me.ue.setContent(value, false);
});
}
},
//获取内容
getValue:function(){
var me = this;
return me.ue.getContent();
},
//获得纯文本
getContentText:function(){
var me=this;
return me.ue.getContentTxt();
},
//在内容最后添加内容
addContent:function(value){
var me=this;
me.ue.setContent(value,true);
},
//指定位置追加内容
insertHtml:function(value){
var me=this;
me.ue.execCommand('insertHtml', value);
},
//注销
toDestroy:function(){
var me=this;
me.ue.destroy();
},

组件的具体使用(注意必须给value绑定)

xtype:'ueditor',
height:500,
width:500,
bind:{
value:'{XXXXx}'
}

完整代码

//author   status404    v1.0
Ext.define("webapp.view.ueditor.Ueditor",{
extend:"Ext.Component",
alias: 'widget.ueditor',
width:500,
height:900,
autoEl:{
tag:'script',
type:'text/plain'
},
initComponent: function () {
var me = this;
me.callParent(arguments);
},
onRender:function(){
var me = this;
me.callParent(arguments);
//初始化Ueditor
me.ue=UE.getEditor(me.getId(),Ext.apply(
{
//此处可以添加ueidot默认的配置
},me.ueditorConfig));
//当Ueditor 内容改变时,传回viewModel,实现双向绑定
me.ue.on("contentChange",function(){
me.publishState("value",me.ue.getContent());
me.isSet=true;
})
},
//给Ueditor赋值
setValue:function(value){
var me=this;
//避免Ueditor内容更改时再又重新赋值
if(me.isSet){
me.isSet=false;
}
else{
me.ue.ready(function(){
me.ue.setContent(value, false);
});
}
},
//获取内容
getValue:function(){
var me = this;
return me.ue.getContent();
},
//获得纯文本
getContentText:function(){
var me=this;
return me.ue.getContentTxt();
},
//在内容最后添加内容
addContent:function(value){
var me=this;
me.ue.setContent(value,true);
},
//指定位置追加内容
insertHtml:function(value){
var me=this;
me.ue.execCommand('insertHtml', value);
},
//注销
toDestroy:function(){
var me=this;
me.ue.destroy();
},
//组件关闭时,销毁Ueditor实例
onDestroy:function(){
var me = this;
me.callParent(arguments);
if (me.rendered) {
try {
me.ue.destroy();
delete me.ue;
} catch (e) { }
}
}
});

Extjs6 编写自己的富文本组件(以ueditor为基础)的更多相关文章

  1. iOS富文本组件的实现—DTCoreText源码解析 数据篇

    本文转载 http://blog.cnbang.net/tech/2630/ DTCoreText是个开源的iOS富文本组件,它可以解析HTML与CSS最终用CoreText绘制出来,通常用于在一些需 ...

  2. 【rich-text】 富文本组件说明

    [rich-text] 富文本组件可以显示HTML代码样式. 1)支持事件:tap.touchstart.touchmove.touchcancel.touchend和longtap 2)信任的HTM ...

  3. 支付宝小程序开发——rich-text富文本组件支持html代码

    前言: 与微信小程序不同,支付宝小程序的富文本组件并不能直接支持html代码,如: 如上,支付宝小程序的富文本组件只支持数组类型,html代码需要使用 mini-html-parser 转换,具体用法 ...

  4. Angular封装WangEditor富文本组件

    富文本组件是web程序中很常用的一个组件,特别是要开发一个博客,论坛这类的网站后台. 得益于Angular的强大,封装WangEditor组件非常简单 1.使用yarn或者npm安装wangedito ...

  5. 富文本HTML编辑器UEditor

    Baidu百度开源富文本HTML编辑器UEditor JS代码网 发表于: 2013-10-30 分类:HTML编辑器  点击:2133  UEditor是由百度web前端研发部开发所见即所得富文本H ...

  6. JS编写自己的富文本编辑器

    富文本编辑器,网上有很多功能齐全种类丰富的如百度的Ueditor,简单适用型的如WangEditor等等.在经过一番挑选后,我发现都不适用现在的项目,然后决定自己造轮子玩玩.富文本编辑器中主要涉及到J ...

  7. 【ASP.NET 插件】分享一款富文本web编辑器UEditor

    UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码... <%@ Page Language ...

  8. jquery富文本在线编辑器UEditor

    UEditor 是由百度「FEX前端研发团队」开发的所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码. UEditor的功能非常强大,官方 ...

  9. nodejs后台集成富文本编辑器(ueditor)

    1 下载ueditor nodejs版本 2 复制public目录下面的文件 到项目静态资源public文件夹下 3 在项目根目录创建ueditor文件夹 要复制进来的内容为 4 在根目录的 uedi ...

随机推荐

  1. PHP array_flip() array_merge() array+array的使用总结

    array_flip(array); //传递一个数组参数,对该数组的键.值进行翻转 例如: $a = array( 'a', 'b', 'c' ); print_r(array_flip($a)); ...

  2. input标签添加上disable属性在ios端字体颜色不兼容的问题

    input[disabled],input:disabled,input.disabled{ color: #3e3e3e; -webkit-text-fill-color: #3e3e3e; -we ...

  3. select 时进行update的操作,在高并发下引起死锁

    场景:当用户查看帖子详情时,把帖子的阅读量:ReadCount+1 select title,content,readcount from post where id='xxxx'   --根据主键查 ...

  4. 企业级Nginx增加日志选项

    日志介绍 目的:将用户的访问信息记录到指定的文件中由ngx_http_log_module模块负责 访问日志参数: access_log:指定日志文件的路径和使用何种日志格式记录日志 log_form ...

  5. MQ环境的搭建

    MQ环境的搭建

  6. Oracle与EntityFramework(EF)的一些事情

    概要 Oracle 和EF 一起用的时候总会有各种问题,这里总结一下解决办法. 模式 Schema 用过Oracle的人应该知道,其实Oracle的用户名一般就是它的模式名称,如果你在用databas ...

  7. js url传值中文乱码完美解决(JAVA)

    js url传值中文乱码完美解决(JAVA) 首先在你的jsp页面这样更改: var url="你要传入的Action的位置&ipid="+ipid+"& ...

  8. iOS中 Proxy和的delegate区别

    在ios中使用proxy代理模式,经常容易和delegate委托模式混淆. 委托模式(delegate),是简单的强大的模式,可让一个对象扮演另外对象的行为.委托对象保持到另外对象的引用,并在适当的时 ...

  9. JVM垃圾收集算法的选择

    1. 介绍 JVM提供了多种垃圾收集器,应该根据应用选择一种合适的垃圾收集器. 垃圾回收管理内存通过如下操作: 在年轻代分配对象,把年龄大的对象晋升到老年代. 当年老代超过阈值的时候,并发标记收集. ...

  10. meta标签的使用(转)

    1.Expires(期限) 说明:可以用于设定网页的到期时间.一旦网页过期,必须到服务器上重新传输. 用法: <meta http-equiv="expires" conte ...