一、下载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. GDAL读取影像并插值

    影像读取 并缩放 读取大影像某一部分,并缩放到指定大小,我们有时会用如下代码: #include "gdal.h" #include "gdal_priv.h" ...

  2. Android 获取SD卡的图片资源

    首先我先获得SD卡下的根目录路径: privateString isSdcard(){ File sdcardDir=null; boolean isSDExist=Environment.getEx ...

  3. Python爬虫教程-07-post介绍(百度翻译)(上)

    Python爬虫教程-07-post介绍(百度翻译)(上) 访问网络两种方法 get: 利用参数给服务器传递信息 参数为dict,使用parse编码 post :(今天给大家介绍的post) 一般向服 ...

  4. C#使用yield关键字构建迭代器

    http://www.cnblogs.com/Huaran1chendu/p/4838536.html 以前,如果我们希望构建支持foreach枚举的自定义集合,只能实现IEnumerable接口(可 ...

  5. [翻译] LazyFadeInView 渐入显示text文本

    LazyFadeInView 渐入显示text文本 https://github.com/itouch2/LazyFadeInView LazyFadeInView is a cool way to ...

  6. [翻译] DZNSegmentedControl

    DZNSegmentedControl A drop-in replacement for UISegmentedControl for showing counts, to be used typi ...

  7. 远程管理客户端--SCCM

    远程控制客户端(设备--启动--远程控制): 1.将该用户在SCCM中赋予 远程工具操作人员 权限后,可以通过ccm控制台连接客户端,即可以使用远程控制工具 客户端设置策略设置--远程工具--管理远程 ...

  8. rabbitmq集群方案

    RabbitMQ的集群方案有以下几种: 1.普通的集群 exchange,buindling再所有的节点上都会保存一份,但是queue只会存储在其中的一个节点上,但是所有的节点都会存储一份queue的 ...

  9. 为什么TCP协议终止链接要四次?

    为什么TCP协议终止链接要四次? 1.当主机A确认发送完数据且知道B已经接受完了,想要关闭发送数据口(当然确认信号还是可以发),就会发FIN给主机B. 2.主机B收到A发送的FIN,表示收到了,就会发 ...

  10. codeforces 803G Periodic RMQ Problem

    codeforces 803G Periodic RMQ Problem 题意 长度为\(1e5\)的数组复制\(1e4\)次,对新的数组进行区间覆盖和区间最小值查询两种操作,操作次数\(1e5\). ...