这篇记得是工作中的例子
描述:
平常的富文本显示都是根据静态的html获取id来显示,比如:
<textarea class="layui-textarea" id="content" >
富文本内容
</textarea>
layui.use([ "form", "layer","layedit"], function() {
var form = layui.form;
var layer = layui.layer;
var layedit = layui.layedit;//引入layedit
//富文本
layedit.set({//上传图片
uploadImage: {
url: '/common/upload/uploadTextareaImage', //接口url
type: 'post', //默认post
success: function (data) { if (data.status == 0) {
layer.msg("图片上传成功!");
}
if (data.message != null) {
layer.msg(result.message)
} }
}
});
//content就是关联id,只能是id并且只能放置一个id
//下面这段代码最好放在上段代码下面
var index = layedit.build('content', {
height: 500//高度
}); //很多时候,你用来layui的东西你就必须按着他的规范接着往下做,这就是用layui最蛋疼的一点,
不用的话就出不来效果,比如获取富文本内容的获取就用下面的代码: //编辑器外部操作
var content = layedit.getContent(index) //获取编辑器内容
var text = layedit.getText(index) //获取编辑器纯文本内容
layedit.getSelection(index) };
现在有个需求就是,富文本的数量是动态的,并且这个数量的个数是根据配置文件来获取的
先看后台配置文件是这样的properties文件:
有三段标题,每个标题根据逗号隔开,通过java代码读取
budget.target=\u9884\u7B97\u76EE\u68071,\u9884\u7B97\u76EE\u68072,\u9884\u7B97\u76EE\u68073
本来配置文件里面存的是中文,但是不管你输出什么文字,eclipse都会帮你转码成上面那样==
比如原来是这样的
budget.target = 名称1,名称2,名称3
然后我们根据java代码读取配置里面配置文件标题的数量:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource; @Configuration
@PropertySource("classpath:xxx.properties")
public class PropertyUtil { @Value("${budget.target}")
private String budgetTarget;//这个是我们从配置文件读取的 public String getBudgetTarget() {
return budgetTarget;
} public void setBudgetTarget(String budgetTarget) {
this.budgetTarget = budgetTarget;
} }
接着:
@RequestMapping(value = "edit")
ModelAndView edit(Model model) {
// 从配置文件读取项目详情的名称和数量
String budget = propertyUtil.getBudgetTarget(); String[] budgets = budget.split(",");//得到一个string数组,然后我们就可以知道我们需要遍历的富文本数量了
//注:一个标题一个富文本编辑器 model.addAttribute("budgets ", budgets);
ModelAndView modelAndView = new ModelAndView("backend/xx/xx/xx");
return modelAndView;
}
然后通过jstl+el表达式进行前端渲染:
<form class="layui-form common-form">
<b>详情</b>
<c:forEach items="${budgets}" var="b" varStatus="s">
<div class="layui-form-item">
<!-- <label class="layui-form-label"></label> -->
<textarea placeholder="请输入内容" lay-verify="content" autocomplete="off"
id="${b}${s.index}" class="layui-textarea"></textarea>
</div>
</c:forEach>
</form> 上面的id="content${s.index}" 表示 标题0,标题1,标题2这样,主要是为了通过layui动态渲染富文本做准备
这边实际代码不是这样的,为了方便记录所以很多地方删了
渲染富文本js:
//接收文本索引
var indexs = [];
layui.use([ "form", "layer","layedit" ], function() {
form = layui.form;
layer = layui.layer;
layedit = layui.layedit; //富文本
layedit.set({//上传图片
uploadImage: {
url: '/common/upload/uploadTextareaImage', //接口url
type: 'post', //默认post
success: function (data) { if (data.status == 0) {
layer.msg("图片上传成功!");
}
if (data.message != null) {
layer.msg(result.message)
} }
}
}); // 渲染富文本
$(".layui-textarea").each(function (index, obj) {
var index = layedit.build($(obj).attr("id"), {//通过循环遍历出每一个id
height: 100
});
indexs.push(index);//没每个id对应的索引push进数组 }); 然后在需要的地方获取富文本内容
// 先清空富文本内容
var contents = [];
// 获取富文本内容
for (var i = 0; i < indexs.length; i++) {
contents.push(layedit.getContent(indexs[i]));
}
});
实际效果:
关于富文本内容就先告一段落了