layui json渲染页面

页面渲染

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>中国数字联盟</title>
    <link rel="stylesheet" href="../../jslibs/layui-v2.5.6/layui/css/layui.css">
</head>
<body class="layui-layout-body">
    <div class="layui-layout layui-layout-admin">
        <div class="layui-header header">
            <a href="javascript:history.back(-1)" class="goback"><i class="layui-icon layui-icon-left" style="font-size: 18px; color: #fff;"></i></a>
            <ul class="layui-nav layui-layout-center">
                <li class="layui-nav-item">首页</li>
            </ul>
        </div>
        <div class="layui-body">
            <!-- 内容主体区域 -->
            <script id="App" type="text/html">
                <div class="longLogo-group">
                    <a class="longLogo" href="">
                        <img src="{{d.longLogo}}" alt="数字联盟"><span>{{d.longLogotext}}</span>
                    </a>
                </div>
                <div class="itemList">
                    <h3 class="recommend">推荐APP</h3>
                    <ul>
                        {{#  layui.each(d.appList, function(index, item){ }}
                        <li class="lit">
                            <div class="layui-inline logo">
                                <img src="{{item.logo}}" class="layui-circle">
                            </div>
                            <div class="content">
                                <h3 class="appname">{{item.appName}}</h3>
                                <div class="companyName">{{item.companyName}}</div>
                                <div class="introduction">{{item.introduction}}</div>
                            </div>
                        </li>
                        {{#  }); }}
                        {{#  if(d.list.length === 0){ }}
					    	无数据
					  {{#  } }}
                    </ul>
                </div>
            </script>
            <div id="List"></div>
        </div>
    </div>


    <script src="../../jslibs/layui-v2.5.6/layui/layui.js"></script>
    <script>
        //JavaScript代码区域
        layui.use('laytpl', function(){
            var laytpl = layui.laytpl;

            var templateContent = document.getElementById('App').innerHTML;
            var data = { //数据
                    "longLogo":"../slogan/mainLogo.png",
                    "longLogotext":"中创时代数字联盟",
                    "appList":[{
                            "appName":"中创时代数字联盟",// app名称
                            "appNo":"", // app编号
                            "longLogo":"", // 图+文logo
                            "logo":"../slogan/mainLogo.png", // 图形logo
                            "downloadUrl":"", // 下载地址
                            "startUrl":"", // 手机系统打开app的url
                            "companyID":"", // 公司ID
                            "companyName":"凯立达", // 公司名称
                            "introduction":"中创时代数字联盟,中创时代企业app,中创时代数字联盟,中创时代企业app,中创时代数字联盟,中创时代企业app,中创时代数字联盟,中创时代企业app", // 简介 200字以内
                            "sortNo":"" // 顺序号
                        }]
                };
            laytpl(templateContent).render(data, function(html){document.getElementById('List').innerHTML = html;});
        });
    </script>
    <style>
        .layui-layout-center {
            position: absolute!important;
            left: 50%;
            top: 0;
            margin-left: -34px;
        }
        .header .goback{
            margin-top: 22px;
            margin-left: 10px;
            display: inline-block;
            vertical-align: top;
        }
        .longLogo-group{
            text-align: center;
            padding:20px;
        }
        .longLogo img {
            width: 68px;
        }
        .longLogo span{
            font-size: 16px;
            margin-left: 5px;
            font-weight: bold;
            color: #5FB878;
        }
        .layui-body{
            left: 0px;
            bottom: 0px;
        }
        .itemList{
            margin-top: 10px;
        }
        .itemList .recommend{
            font-size: 16px;
            color: #393D49;
            padding: 10px 10px;
            background: #f5f5f5;
        }
        .itemList .logo{
            width: 200px;
        }
        .itemList .logo img{
            width: 100%;
        }
        .itemList ul .lit{
            padding: 10px 10px;
            border-bottom: solid 8px #f5f5f5;
            display: flex;
            justify-content: flex-start;
            align-items: center;
        }
        .itemList ul .lit .content{
            padding-left: 10px;
        }
        .itemList ul .lit .appname{
            font-size: 18px;
            color: #393D49;
            font-weight:bold;
        }
        .itemList ul .lit .companyName{
            font-size: 16px;
            color: #666;
            margin-top: 5px;
        }
        .itemList ul .lit .introduction{
            font-size: 14px;
            color: #999;
            line-height: 22px;
            margin-top: 5px;
            display: -webkit-box;
            -webkit-box-orient: vertical;
            -webkit-line-clamp: 3;
            overflow: hidden;
        }
    </style>
</body>
</html>
### 使用 Layui 实现页面渲染 #### AJAX 加载 HTML 页面后的重新渲染 当使用 Layui 的 `ajax` 方法加载新的 HTML 片段并将其插入到现有 DOM 中时,为了使新加入的组件能够正常工作,需要手动初始化这些组件。这通常涉及到调用特定模块的 `.init()` 方法来触发重新渲染过程[^1]。 例如,在成功请求返回并将响应内容注入目标容器后: ```javascript $.ajax({ url: 'your-url', success: function(res){ $('#target').html(res); // 插入HTML片段 layui.element.init(); // 初始化元素样式(如面板、标签等) } }); ``` #### 父子页面间的交互与数据传递 对于嵌套于 iframe 内的子页面而言,可以通过 `parent` 关键字访问父窗口的对象和属性,从而实现两者之间的通信以及必要的同步更新操作[^2]。比如,如果希望从子页面向父页面发送消息或共享某些变量,则可以这样做: ```javascript // 子页面内执行此代码可改变父页面中的某个全局变量 parent.someGlobalVariable = newValue; ``` 另外,也可以利用 `layui.layer` 提供的功能创建弹出层,并通过设置参数控制其行为,包括但不限于指定要打开的内容源、定义关闭回调函数等[^3]。 #### 表格组件的具体应用案例 针对更复杂的场景——像带有分页功能和支持动态查询条件筛选记录列表的情况——Layui 的 table 组件提供了丰富的配置选项满足需求[^4]。下面是一个简单的例子展示如何构建这样的表格界面: ```javascript table.render({ elem: '#demo' ,url:'/data.json' // 数据接口地址 ,page:true // 开启分页模式 ,cols:[[ // 列定义 {field:'id', title:'ID'} ,{field:'name', title:'姓名'} ,{fixed: 'right', align:'center', toolbar:'#barDemo'} // 工具栏按钮列 ]] }); // 监听工具条事件处理编辑保存逻辑 table.on('tool(demo)', function(obj){ var data = obj.data; // 获取当前行的数据对象 layer.prompt({title: '请输入修改后的值'}, function(value, index){ $.post('/update',{id:data.id,value:value},function(){ obj.update({value:value}); // 更新本地显示 layer.close(index); }); }); }); ``` 上述代码展示了如何结合 Ajax 技术异步获取服务器端提供的 JSON 格式的表单数据,并呈现给用户;同时也包含了对选定项进行简单增删改查的操作支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值