一、下载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. Angular入门教程四

    4.8依赖注入DI 通过依赖注入,ng想要推崇一种声明式的开发方式,即当我们需要使用某一模块或服务时,不需要关心此模块内部如何实现,只需声明一下就可以使用了.在多处使用只需进行多次声明,大大提高可复用 ...

  2. C++学习笔记(9)----关于变量和数组大小的一道容易出错的面试题

    一道容易出错的C++笔试题 求下面代码的输出内容: int main(int argc,char* argv[]) { char str1[]="Hello"; char* str ...

  3. 利用Mongodb做地理空间查询

    MongoDB 是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. 前言 在移动开发中,经常会用到定位的功能,例如美团.饿了么.猫眼电影等的app ...

  4. String对象内存分析

    Java中内存分析: 栈(Stack) :存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中). 堆(heap): ...

  5. 线性表的Java实现--链式存储(双向链表)

    有了单向链表的基础,双向链表的实现就容易多了. 双向链表的一般情况: 增加节点: 删除节点: 双向链表的Java实现: package com.liuhao.algorithm;      publi ...

  6. JUnit测试模块使用

    JUnit简介 ​ JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个. JUn ...

  7. c#之委托事件(DelegateEvent)

    前面一章学习了委托以及多播委托,接下来我们来学习下委托事件. 在学习委托事件的前提下,得知道什么是观察者模式. 首先,我们来模拟一个场景:例如,当一只狗汪汪汪叫的时候,baby被吓哭了,刚好要偷东西的 ...

  8. CentOS7中永久保存systemd日志

    将systemd的日志写入磁盘: 1.在/var/log/目录下创建日志存放目录,并加入systemd-journal的权限: ~]#mkdir /var/log/journal ~]#chown r ...

  9. java "Too small initial heap" 错误

    Tomcat内存配置 JAVA_OPTS="-server -Duser.timezone=GMT+08-Xms1024m -Xmx1024m -XX:PermSize=1024m -Xmn ...

  10. 《C++ Primer Plus》读书笔记之五—函数-C++的编程模块

    函数-C++的编程模块   1.C++对于返回值的类型有一定的限制:不能是数组,但可以是其他任何类型——整数.浮点数.指针,甚至可以是结构和对象(有趣的是,虽然C++函数不能直接返回数组,但可以将数组 ...