如何基于layui的laytpl实现数据绑定的示例代码


Posted in Javascript onApril 10, 2020

想了半天才想起自己园子的登录密码。可想而知,多长时间没登录了

正文

一开始用layui做了几个管理系统,所以用起来觉得确实很容易上手,管理后台最常用的就是form和table以及弹窗类。layui提供的form table layer已经是很简洁好用了,抛开底层的封装不说,给我们展现出来的使用方法我觉得是非常简化了。管理用到的除了form table layer之外,经常会有一些统计数据展示或者详情页这种内容展示。那么一些用到的统计数据(除图表),如文字统计型数据展示。这个时候,用layui的基于laytpl展现这种功能其实是极好的。 

先写一个简单的数据绑定

第一步:引入layui的css文件和js文件(自行引入)
第二步:建立视图,用于呈现渲染结果,代码如下:

<div class="layui-row">
    <div class="layui-col-md6" id="orderInfoDiv"></div>    
</div>

第三步:编写模版,使用一个script标签存放模板,代码如下:

<script type="text/html" id="orderInfo">
    <div class="layui-card">
      <div class="layui-card-header">订单概况</div>
      <div class="layui-card-body">
        <ul class="layui-row layui-col-space10 layadmin-backlog">
          <li class="layui-col-xs6 layui-col-sm3">
            <a class="layadmin-backlog-body">
              <h3>营业额</h3>
              <p><cite style="font-size:24px;">{{d.turnover}}</cite></p>
            </a>
          </li>
          <li class="layui-col-xs6 layui-col-sm3">
            <a class="layadmin-backlog-body">
              <h3>订单数</h3>
              <p><cite style="font-size:24px;">{{d.orderNum}}</cite></p>
            </a>
          </li>
          <li class="layui-col-xs6 layui-col-sm3">
            <a class="layadmin-backlog-body">
              <h3>已发货</h3>
              <p><cite style="font-size:24px;">{{d.delivered}}</cite></p>
            </a>
          </li>
          <li class="layui-col-xs6 layui-col-sm3">
            <a class="layadmin-backlog-body">
              <h3>未发货</h3>
              <p><cite style="font-size:24px;">{{d.unDelivered}}</cite></p>
            </a>
          </li>
          <li class="layui-col-xs6 layui-col-sm3">
            <a class="layadmin-backlog-body">
              <h3>已取消</h3>
              <p><cite style="font-size:24px;">{{d.cancelled}}</cite></p>
            </a>
          </li>
          <li class="layui-col-xs6 layui-col-sm3">
            <a class="layadmin-backlog-body">
              <h3>已收货</h3>
              <p><cite style="font-size:24px;">{{d.received }}</cite></p>
            </a>
          </li>
          <li class="layui-col-xs6 layui-col-sm3">
            <a class="layadmin-backlog-body">
              <h3>已评价</h3>
              <p><cite style="font-size:24px;">{{d.evaluated}}</cite></p>
            </a>
          </li>
          <li class="layui-col-xs6 layui-col-sm3">
            <a class="layadmin-backlog-body">
              <h3>好评率</h3>
              <p><cite style="font-size:24px;">{{d.favorableRate}}%</cite></p>
            </a>
          </li>
        </ul>
      </div>
    </div>
  </script>

第四步:渲染模版,代码如下:

<script>
 layui.use(['laytpl'], function () {
   var laytpl = layui.laytpl;

   //订单统计(正常情况下,此处应是ajax返回后的数据,这里是模拟数据。)
   //渲染模板所用的数据
   var data = { turnover: "23,251", orderNum: "256", delivered: "16", unDelivered: "130", cancelled: "10", received: "100", evaluated: "80", favorableRate: "80" }   

   var orderInfoTpl = orderInfo.innerHTML //获取模板,即上面所定义的 <script id="orderInfo">
   , orderInfoDiv = document.getElementById('orderInfoDiv'); //视图 即上面的 <div id="orderInfoDiv">
   laytpl(orderInfoTpl).render(data, function (html) { //渲染视图
     orderInfoDiv.innerHTML = html;
   });
 })
 </script>

第五步:效果显示如下

如何基于layui的laytpl实现数据绑定的示例代码

是不是非常的简单呢。因为大量的后台系统都是基于layui开发的,遇到一些数据展示型的不想用传统的jquery绑定方式的话,用这个其实非常实用呢。

详情数据展示

如果是一个table,点击查看详情的话,也可以用这种方式展示数据

第一步:引入layui的css文件和js文件(自行引入),页面中用到的css样式自行编写。

第二步:table数据展示,此处是赋值已知数据,开发当中换成自己的数据,并给table定义一个点击事件

<table class="layui-hide" lay-filter="demoTableFilter" id="demoTable"></table>
<script type="text/html" id="barDemo">
     <a class="layui-btn layui-btn-xs" lay-event="detail">查看详情</a>
 </script>

以下是table的赋值

table.render({
     elem: '#demoTable'
    , cols: [[ //标题栏
      { field: 'id', title: 'ID', width: 100 }
      , { field: 'username', title: '用户名', width: 80 }
      , { field: 'email', title: '邮箱', width: 180 }
      , { field: 'sign', title: '签名', width: 180 }
      , { field: 'sex', title: '性别', width: 80 }
      , { field: 'city', title: '城市', width: 100 }
      , { field: 'experience', title: '积分', minWidth: 80 }
      , { width: 100, align: 'center', toolbar: '#barDemo' }
    ]]
    , data: [{
      "id": "10001"
      , "username": "杜甫"
      , "email": "xianxin@layui.com"
      , "sex": "男"
      , "city": "浙江杭州"
      , "sign": "人生恰似一场修行"
      , "experience": "116"
      , "ip": "192.168.0.8"
      , "logins": "108"
      , "joinTime": "2016-10-14"
    },{
      "id": "10002"
     , "username": "李白"
     , "email": "xianxin@layui.com"
     , "sex": "男"
     , "city": "浙江杭州"
     , "sign": "人生恰似一场修行"
     , "experience": "12"
     , "ip": "192.168.0.8"
     , "logins": "106"
     , "joinTime": "2016-10-14"
     , "LAY_CHECKED": true
     }]
   });

table页面效果展示

如何基于layui的laytpl实现数据绑定的示例代码

第三步,建立一个用来渲染详情数据的弹出框

<div class="demoDetailDiv" style="display:none;padding:10px;">
    <div id="detailDiv"></div>
 </div>

第四步,点击表格的“查看详情”,通过laytpl实现数据绑定代码如下:

table.on('tool(demoTableFilter)', function (obj) {
     var data = obj.data;
     if (obj.event === 'detail') {
       index = layer.open({
         title: '查看详情',
         type: 1,
         move: false,
         content: $('.demoDetailDiv'),
         area: ['750px', '300px'],
         resize: false,
         scrollbar: false
       });
       var demoDetailTpl = demoDetail.innerHTML //获取模板,
        , detailDiv = document.getElementById('detailDiv'); //视图 
        laytpl(demoDetailTpl).render(obj.data, function (html) { //渲染视图
          detailDiv.innerHTML = html;
       });
     } 
   });

显示效果如下:

如何基于layui的laytpl实现数据绑定的示例代码

总结:

以上是记录一点最简单的用laytpl渲染数据的方式。到此这篇关于如何基于layui的laytpl实现数据绑定的示例代码的文章就介绍到这了,更多相关layui laytpl 数据绑定内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jquery的$(document).ready()和onload的加载顺序
May 26 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
Sep 30 Javascript
javascript中的self和this用法小结
Feb 08 Javascript
Js保留小数点的4种效果实现代码分享
Apr 12 Javascript
js中substring和substr两者区别和使用方法
Nov 09 Javascript
js Canvas绘制圆形时钟效果
Feb 17 Javascript
JS拉起或下载app的实现代码
Feb 22 Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
May 03 Javascript
js学习总结之dom2级事件基础知识详解
Jul 27 Javascript
React Native悬浮按钮组件的示例代码
Apr 05 Javascript
vue使用原生swiper代码实例
Feb 05 Javascript
微信小程序实现搜索框功能及踩过的坑
Jun 19 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
Apr 10 #Javascript
vue+vant使用图片预览功能ImagePreview的问题解决
Apr 10 #Javascript
JS实现省市县三级下拉联动
Apr 10 #Javascript
JavaScript实现简单的图片切换功能(实例代码)
Apr 10 #Javascript
TypeScript的安装、使用、自动编译的实现
Apr 10 #Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
Apr 10 #Javascript
javascript实现贪吃蛇经典游戏
Apr 10 #Javascript
You might like
用Zend Encode编写开发PHP程序
2010/02/21 PHP
深入PHP autoload机制的详解
2013/06/09 PHP
php实现文件下载简单示例(代码实现文件下载)
2014/03/10 PHP
php文件上传类的分享
2017/07/06 PHP
JavaScript中两个感叹号的作用说明
2011/12/28 Javascript
jQuery prev ~ siblings选择器使用介绍
2013/08/09 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
Css3制作变形与动画效果
2015/07/24 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
javascript 中的事件委托详解
2016/10/25 Javascript
js实现日历的简单算法
2017/01/24 Javascript
bootstrap table动态加载数据示例代码
2017/03/25 Javascript
jquery网页加载进度条的实现
2017/06/01 jQuery
nodejs分离html文件里面的js和css的方法
2019/04/09 NodeJs
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
2019/05/08 Javascript
在JavaScript中实现链式调用的实现
2019/12/24 Javascript
JavaScript实现联动菜单特效
2020/01/07 Javascript
如何优雅地取消 JavaScript 异步任务
2020/03/22 Javascript
VUE和Antv G6实现在线拓扑图编辑操作
2020/10/28 Javascript
python实现堆栈与队列的方法
2015/01/15 Python
python中string模块各属性以及函数的用法介绍
2016/05/30 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
2019/07/04 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
pycharm中leetcode插件使用图文详解
2020/12/07 Python
Python类型转换的魔术方法详解
2020/12/23 Python
css3和jquery实现自定义checkbox和radiobox组件
2014/04/22 HTML / CSS
css3 media 响应式布局的简单实例
2016/08/03 HTML / CSS
html5拖曳操作 HTML5实现网页元素的拖放操作
2013/01/02 HTML / CSS
html5 canvas fillRect坐标和大小的问题解决方法
2014/03/26 HTML / CSS
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
房屋出售协议书
2014/04/10 职场文书
第二课堂活动总结
2014/05/07 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
工作收入住址证明
2014/10/28 职场文书
承诺函格式模板
2015/01/21 职场文书