一、下载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. 利用open live writer工具的Metaweblog技术API接口同步到多个博客。

    测试例子内容: hello world hello metaweblog hello open live writer

  2. 关于用GetManifestResourceNames读不出资源文件的解决

    在写程序时,需要读出所有资源的图片文件,程序工作正常, Assembly asm = Assembly.GetExecutingAssembly();string[] resourceNames = ...

  3. Quick BI助力云上大数据分析---深圳云栖大会

    在3月29日深圳云栖大会的数据分析与可视化专场中,阿里云产品专家陌停对大数据智能分析产品 Quick BI 进行了深入的剖析.大会现场的精彩分享也赢得观众们的一直认可和热烈的反响. 大数据分析之路的挑 ...

  4. Hive开窗函数的理解

    1.从一个sql语句开始 select id,sum(price) over(partition by id order by price desc) from books; sum作为聚合函数的时候 ...

  5. Github文件夹下载到本地

    1.如图:需要将以下文件夹下载到本地. https://github.com/aspnet/Docs/tree/master/aspnet/mvc/overview/getting-started/i ...

  6. nfs 安装配置

    系统环境:centos 6.4 x86_64 minimal,记得是199个安装包. 两台机器(可以是虚拟机): 192.168.1.150--->a机器 192.168.1.11-----&g ...

  7. java继承-重写-super实例补充

    方法重写: 是指子类根据需要父类继承来的方法进行改写,是多态机制的前奏. 重写注意点: 1.重写方法必须和被重写方法具有相同的方法名,参数列表和返回值. 2.重写方法方法不能使用比被重写方法更严格的访 ...

  8. BZOJ3791:作业(DP)

    Description 众所周知,白神是具有神奇的能力的. 比如说,他对数学作业说一声“数”,数学作业就会出于畏惧而自己完成:对语文作业说一声“语”,语文作业就会出于畏惧而自己完成. 今天,语文老师和 ...

  9. [CQOI2006]凸多边形(半平面相交)

    嘟嘟嘟 本来我要写feng shui这道题的.然后网上都说什么半平面相交,于是我还得现学这个东西,就来刷这道模板题了. 所谓的半平面相交和高中数学的分数规划特别像.比如这道题,把每一条边看成一条有向直 ...

  10. 如何高效的写出markdown笔记

    重置用户名和密码 安利一个小工具donet-cnblog可以同步图片到cnblog中,同时生成对应的Markdown笔记.写博客的时候我们可以本地写,用这个工具同步到cnblog上能够大大节省我们的时 ...