Angular2.x for Baidu UEditor(UMeditor)
npm install ngx-ueditor --save
把 UEditorModule
模块导入到你项目中。
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { UEditorModule } from 'ngx-ueditor';
@NgModule({
imports: [
BrowserModule,
FormsModule,
UEditorModule.forRoot({
js: [
`./assets/ueditor/ueditor.config.js`,
`./assets/ueditor/ueditor.all.min.js`,
],
// 默认前端配置项
options: {
UEDITOR_HOME_URL: './assets/ueditor/'
}
})
],
declarations: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule { }
<ueditor [(ngModel)]="html"
[config]="{ wordCount: true }"
[loadingTip]="'加载中……'"
(onReady)="_ready($event)"
(onDestroy)="_destroy()"
(ngModelChange)="_change($event)"></ueditor>
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
config | Object |
- | 前端配置项说明,见官网 |
loadingTip | string |
加载中... |
初始化提示文本 |
disabled | boolean |
false |
是否禁用 |
delay | number |
50 |
延迟初始化UEditor,单位:毫秒 |
onPreReady | EventEmitter<UEditorComponent> |
- | 编辑器准备就绪之前会触发该事件,并会传递 UEditorComponent 当前实例对象,可用于后续操作(比如:二次开发前的准备)。 |
onReady | EventEmitter<UEditorComponent> |
- | 编辑器准备就绪后会触发该事件,并会传递 UEditorComponent 当前实例对象,可用于后续操作。 |
onDestroy | EventEmitter |
- | 编辑器组件销毁后会触发该事件 |
ngModelChange | EventEmitter<string> |
- | 编辑器内容发生改变时会触发该事件 |
懒加载在未到 wdinow.UE
时会启动,如果你在 index.html
已经使用 <script src="ueditor.all.js"></script>
加载过,懒加载流程将会失效。
加载语言注意点
懒加载会自动识别并引用,否则,需要自行在 <head>
加入语言版本脚本。
首先,需要给组件定义一下模板变量:
<ueditor [(ngModel)]="full_source" #full></ueditor>
使用 @ViewChild
访问组件,并使用 this.full.Instance
访问ueditor实例对象。
export class DemoComponent {
@ViewChild('full') full: UEditorComponent;
constructor(private el: ElementRef) {}
getAllHtml() {
// 通过 `this.full.Instance` 访问ueditor实例对象
alert(this.full.Instance.getAllHtml())
}
}
虽说上节也可以直接注册ueditor事件,但当组件被销毁时可能会引发内存泄露。所以不建议直接在ueditor实例中这么做。组件本身提供 addListener
和 removeListener
来帮你处理。
// 事件监听
this.full.addListener('focus', () => {
this.focus = `fire focus in ${new Date().getTime()}`;
});
// 事件移除
this.full.removeListener('focus');
onPreReady
onPreReady
是指在UEditor创建前会触发;因此,可以利用这个事件做一些针对二次开发的准备工作。比如,针对本实例创建自定义一个按钮:
<ueditor [(ngModel)]="custom_source" (onPreReady)="onPreReady($event)" [config]="custom"></ueditor>
onPreReady(comp: UEditorComponent) {
UE.registerUI('button', function(editor, uiName) {
//注册按钮执行时的command命令,使用命令默认就会带有回退操作
editor.registerCommand(uiName, {
execCommand: function() {
alert('execCommand:' + uiName)
}
});
//创建一个button
var btn = new UE.ui.Button({
//按钮的名字
name: uiName,
//提示
title: uiName,
//添加额外样式,指定icon图标,这里默认使用一个重复的icon
cssRules: 'background-position: -500px 0;',
//点击时执行的命令
onclick: function() {
//这里可以不用执行命令,做你自己的操作也可
editor.execCommand(uiName);
}
});
//当点到编辑内容上时,按钮要做的状态反射
editor.addListener('selectionchange', function() {
var state = editor.queryCommandState(uiName);
if (state == -1) {
btn.setDisabled(true);
btn.setChecked(false);
} else {
btn.setDisabled(false);
btn.setChecked(state);
}
});
//因为你是添加button,所以需要返回这个button
return btn;
}, 5, comp.id);
// comp.id 是指当前UEditor实例Id
}
Hook
hook调用会在UE加载完成后,UEditor初始化前调用,而且这个整个APP中只会调用一次,通过这个勾子可以做全局性的二次开发。
UEditorModule.forRoot({
js: [
`./assets/ueditor/ueditor.config.js`,
`./assets/ueditor/ueditor.all.min.js`,
],
// 默认前端配置项
options: {
UEDITOR_HOME_URL: './assets/ueditor/'
},
hook: (UE: any): void => {
// button 自定义按钮将在所有实例中有效。
UE.registerUI('button', function(editor, uiName) {
//注册按钮执行时的command命令,使用命令默认就会带有回退操作
editor.registerCommand(uiName, {
execCommand: function() {
alert('execCommand:' + uiName)
}
});
//创建一个button
var btn = new UE.ui.Button({
//按钮的名字
name: uiName,
//提示
title: uiName,
//添加额外样式,指定icon图标,这里默认使用一个重复的icon
cssRules: 'background-position: -500px 0;',
//点击时执行的命令
onclick: function() {
//这里可以不用执行命令,做你自己的操作也可
editor.execCommand(uiName);
}
});
//当点到编辑内容上时,按钮要做的状态反射
editor.addListener('selectionchange', function() {
var state = editor.queryCommandState(uiName);
if (state == -1) {
btn.setDisabled(true);
btn.setChecked(false);
} else {
btn.setDisabled(false);
btn.setChecked(state);
}
});
//因为你是添加button,所以需要返回这个button
return btn;
});
}
})
组件加入 required
当编辑器为空时会处于 ng-invalid
状态,具体体验见Live Demo。
当你快速切换路由时,可能会引起:Cannot read property 'getDom' of undefined
异常,这是因为 UEditor 在初始化过程中是异步行为,当 Angular 组件被销毁后其 DOM 也一并被移除,这可能导致进行初始化中的 UEditor 无法找到相应 DOM。我们无法避免这种错误,可以使用 delay
延迟启动初始化 Ueditor 适当地减少这种快速切换路由的问题。
UEditor 自带单图、多图上传,只需要配置 options.serverUrl
服务端路径即可,有关更多上传细节 百度:Ueditor。
若自身已经系统包含类似_淘宝图片_统一图片管理可以自行通过二次开发图片资源选取按钮。
Please follow this guidelines when reporting bugs and feature requests:
Thanks for understanding!
The MIT License (see the LICENSE file for the full text)
1、在使用ueditor的页面引用JS文件 <script type="text/javascript" src="ueditor/editor_config.js"></script> <script type="text/javascript" src="ueditor/editor_all.js"></script> 2、在使用ueditor的页面引用调用该富
1.关于如何将ueditor里面的相关js文件引用到nuxt项目里? 参考网站:nuxt官网文档 (zh.nuxtjs.org/) 首先,先去百度富文本编辑器官网(ueditor.baidu.com/website/)去下载ueditor 1.4.3.3 jsp 版本utf-8 然后把下下来的文件自己新建文件夹放进去(除了jsp文件夹) (我把除了jsp的文件夹以外的所有文件放到了新建文件夹Ued
Angular-UEditor 详细介绍 Angualr 作为最近前端大热的一款框架,越来越多国人开始使用并且不断有成功的项目。UEditor作为百度前端团队的一款神器,在国内多个项目也在使用。所以小编抽了个时间把angular和UEditor整合起来作为一款angular的插件。 angular-ueditor angular-ueditor 是一款整合了 angular 和 UEditor 的
https://www.cnblogs.com/dmcl/p/7152711.html vue + Ueditor 配置 https://blog.csdn.net/cocoonyang/article/details/76656041 js包含文件
ngx-weui 是一个使用 Angular 构建的 WeUI 组件。 在线示例以及API文档。
ngx-fastdfs 是 nginx + lua +fastdfs 实现分布式图片实时动态压缩。 install 进入docker目录docker build -t fastdfs:dev . 使用 docker -idt -p 80:80 fastdfs:dev /bin/bash进入容器执行/etc/rc.local 测试 进入容器执行test目录下的./test.sh或者直接执行下面脚本
ngx-markdown ngx-markdown is an Angular library that combines... Marked to parse markdown to HTML Prism.js for language syntax highlight Emoji-Toolkit for emoji support KaTeX for math expression rende
ngx-admin Who uses ngx-admin?| Documentation | Installation Guidelines | Angular templates New! Material theme for ngx-admin Material admin theme is based on the most popular Angular dashboard templat
@sweetalert2/ngx-sweetalert2 Official SweetAlert2 integration for Angular This is not a regular API wrapper for SweetAlert (which already works very well alone), it intends to provide Angular-esque ut
ngx-dropzone A lightweight and highly customizable Angular dropzone component for file uploads. For a demo see DEMO. And the CODE for the demo. Install $ npm install --save ngx-dropzone Usage // in ap
ngx-slick Support angular 6+, Slick 1.8.1 Example Installation To install this library, run: $ npm install ngx-slick --save Consuming your library Once you have published your library to npm, you can
Angular Module for displaying a feed of items in a masonry layout using https://github.com/desandro/masonry This package was originally a fork from https://github.com/jelgblad/angular2-masonry to allo