Umeditor是百度旗下的开源富文本编辑器项目,目前用于百度贴吧,是ueditor的迷你版本。

  公司的Angular后台管理项目需要上传一些新闻,用Umeditor十分适合。但是目前官方只提供Jsp,Asp,Php和.net版本,也就是说只支持一般页面应用。而每次初始化编辑器时,都需要加载一次

umeditor.min.js文件:

<script type="text/javascript" charset="utf-8" src="./js/lib/umeditor/umeditor.min.js"></script>

  否则只运行 var um = UM.getEditor('myEditor') 是无法初始化编辑器。估计原因是umeditor.min.js文件中就有编辑器初始化的代码。

  Angular这种单页面应用,一般只加载一次js文件,然后在各个路由中都可以使用,不会主动去运行这些js文件,这就是很多人问“为什么angular路由中的umeditor在第一次点进来时候有,第二次点的时候就不出现”的原因了。要解决这个问题,必须要每次进入带有umeditor的路由页码时,都要运行一次umeditor.min.js文件:

  

  但是umeditor.min.js被压缩得面目全非,无从下手,所以我们看看ueditor.js:

  

  可以看出此js文件就是基于jquery,执行一个巨大的匿名函数来进行初始化。所以方案很简单,给此函数一个名字,后面就可以反复调用而不需要加载文件了:

  

  这样切换控制器时,我们只需要执行一次editorInit($),再运行实例化代码

um = UM.getEditor('myEditor');//实例化

,就可以顺利加载umeditor了。大家可以把umeditor的所有功能封装成Angular服务,注入到控制器,这样代码就清晰易懂了。

  最后我们看到,由于我们用umeditor.js替代了ueditor.min.js,不可避免文件体积就变大了:

  

  381KB太大了,我们可以把修改过的程序压缩一下。这里推荐一个在线压缩代码的网站:http://tool.oschina.net/jscompress。压缩过后,umeditor.js的大小是178KB,可以接受。

  

  (PS:之前看到有人把ueditor封装成Angular指令,但是我几经折腾也没有成功插入,而且那个项目也有几年没有维护了,所以放弃使用。)

在Angular项目下使用Umeditor的更多相关文章

  1. 个人从源码理解angular项目在JIT模式下的启动过程

    通常一个angular项目会有一个个模块(Module)来管理各自的业务,并且必须有一个根模块(AppModule)作为应用的入口模块,整个应用都围绕AppModule展开.可以这么说,AppModu ...

  2. 把angular项目整合到.net mvc中

    之前的开发选择的是完全舍弃服务端,仅保留最简单web服务器提供angular经打包的静态资源,此外所有的业务与数据请求都访问一个分离的WebApi来实现.不过最近碰到一个需求,有必要使用多个客户端,而 ...

  3. Angular20 nginx安装,angular项目部署

    1 nginx安装(Windows版本) 1.1 下载安装包 到官网下载Windows版本的nginx安装包 技巧01:下载好的压缩包解压即可,无需安装 1.2 启动nginx 进入到解压目录,点击 ...

  4. Angular4--提速--提升Angular项目的首页打开速度(包含微信登录优化)

    Angular项目的首页打开速度很慢,有时候会有几秒的加载时间.如果在手机端访问的话,怕是要等待十多秒,这对用户体验很差.下面参考http://www.cnblogs.com/feiyu159/p/8 ...

  5. Angular4---部署---将Angular项目部署到IIS上

    ---恢复内容开始--- Angular项目部署到一个IIS服务器上 1.安装URL rewrite组件: 网址:https://www.microsoft.com/en-us/download/de ...

  6. [转]Angular4---部署---将Angular项目部署到IIS上

    本文转自:https://www.cnblogs.com/kingkangstudy/p/7699710.html Angular项目部署到一个IIS服务器上 1.安装URL rewrite组件: 网 ...

  7. [转]Angular项目目录结构详解

    本文转自:https://blog.csdn.net/yuzhiqiang_1993/article/details/71191873 版权声明:本文为博主原创文章,转载请注明地址.如果文中有什么纰漏 ...

  8. angularjs探秘<三> 控制器controller及angular项目结构

    先来看一个例子 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=&quo ...

  9. gulp 在 angular 项目中的使用

    gulp 在 angular 项目中的使用 keyword:gulp,angularjs,ng,ngAnnotate,jshint,gulpfile 最后附完整简洁的ng项目gulpfile.js 准 ...

随机推荐

  1. PHP后台程序员工作到如今的一点心得

    一个项目的建立,一开始一定要有需求文档,没有需求文档的项目注定会改来改去.还被骂的很惨.要时刻牢记一句话:口说无凭,有文档为证. 第一:开发语言的选择,PHP,当然还有JAVA,.NET你做的项目当然 ...

  2. SpringMVC REST 风格请求介绍及简单实践

    简介 REST 即 Representational State Transfer.(资源)表现层状态转化.是目前最流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以正得到越来越 ...

  3. 【Unity优化】如何实现Unity编辑器中的协程

    Unity编辑器中何时需要协程 当我们定制Unity编辑器的时候,往往需要启动额外的协程或者线程进行处理.比如当执行一些界面更新的时候,需要大量计算,如果用户在不断修正一个参数,比如从1变化到2,这种 ...

  4. Seajs使用实例入门介绍

    本文所用例子的代码目录结构: seajs example |--sea-module //存在依赖文件 |--jquery |--jqeury.js |--sea.js |--static //存放自 ...

  5. Jmeter-测试计划元件

    打开Jmeter页面,默认显示测试计划和工作台: 1.测试计划: 用来描述一个性能测试,包含与本次性能测试所有相关的功能.也就说性能测试的所有内容是于基于一个计划的. 右键单击"测试计划&q ...

  6. js,jq获取元素位置属性及兼容性写法

    网页被卷起来的高度/宽度 document.documentElement.scrolltop //火狐 和 其他浏览器 document.body.scrolltop   //ie,谷歌浏览器和没有 ...

  7. Nginx + ngx_lua安装测试【CentOs下】

          最近打算搞搞nginx,扒着各位先驱的文章自己进行测试下,中间过程也是错误不断,记录一下,以备使用.       nginx的安装挺简单的,主要还是研究下一些第三方的模块,首先想试下初始化 ...

  8. javaWEB与JSP指令

    JSP三大指令  一个jsp页面中,可以有0~N个指令的定义!1. page --> 最复杂:<%@page language="java" info="xx ...

  9. 【C++】指针与引用的区别

    本文主要总结在C++中指针与引用的区别. 从定义与性质来看指针与引用有如下区别: 指针表示的是一块变量的地址 引用表示一个变量的别名. 因此指针变量需要占用空间(一个指针变量在32位系统下占用4字节, ...

  10. [SinGuLaRiTy] SplayTree 伸展树

    [SinGuLaRiTy-1010]Copyrights (c) SinGuLaRiTy 2017. All Rights Reserved. Some Method Are Reprinted Fr ...