2024年9月20日

laytpl动态渲染数据 ifelse语法


切图网不仅可以做前端页面切图,还可以做后台数据对接,这是在layui后台项目遇到的,需要动态渲染数据到页面,除了自定义数据数组以外,还需要找一个模板渲染方式,比较简单的有jquery.tmpl插件可以做到,但是这个是用的layui,如果本身layui也有渲染方法的话,用layui的方法会更加适合,那就是laytpl,它是layui的一套模板语法,基于它就可以快速实现数据渲染到页面。

以下是最常规的渲染方法,亲测可用

//第一步:编写模版。你可以使用一个script标签存放模板,如:
<script id=”demo” type=”text/html”>
<h3>{{ d.title }}</h3>
<ul>
{{# layui.each(d.list, function(index, item){ }}
<li>
<span>{{ item.modname }}</span>
<span>{{ item.alias }}:</span>
<span>{{ item.site || ” }}</span>
</li>
{{# }); }}
{{# if(d.list.length === 0){ }}
无数据
{{# } }}
</ul>
</script>

//第二步:建立视图。用于呈现渲染结果。
<div id=”view”></div>

//第三步:渲染模版
var data = { //数据
“title”:”Layui常用模块”
,”list”:[{“modname”:”弹层”,”alias”:”layer”,”site”:”layer.layui.com”},{“modname”:”表单”,”alias”:”form”}]
}
var getTpl = demo.innerHTML
,view = document.getElementById(‘view’);
laytpl(getTpl).render(data, function(html){
view.innerHTML = html;
});

模板语法

{{ d.field }} 不转义
{{= d.field }} 转义
{{# JavaScript表达式 }}
{{#
var fn = function(){
return ‘2017-08-18’;
};
}}
{{# if(true){ }}
开始日期:{{ fn() }}
{{# } else { }}
已截止
{{# } }}

{{! template !}}
对一段指定的模板区域进行过滤,即不解析该区域的模板。注:layui 2.1.6 新增
<div> {{! 这里面的模板不会被解析 !}}</div>

重新定义模板分隔符

laytpl.config({
open: ‘<%’,
close: ‘%>’
});

//分割符将必须采用上述定义的
laytpl([
‘<%# var type = “公”; %>’ //JS 表达式
,'<% d.name %>是一位<% type %>猿。’
].join(”)).render({
name: ‘贤心’
}, function(string){
console.log(string); //贤心是一位公猿
});

微信扫一扫二维码访问


16年前端经验
加微信好友直接沟通
了解《我的十年》