zoukankan      html  css  js  c++  java
  • mui 根据 json 数据动态创建列表

    使用 underscore.js 模块解析

    Underscore提供了一个轻量级的模板解析函数,它可以帮助我们有效地组织页面结构和逻辑。

    实例:

    <!DOCTYPE html>  
    <html xmlns="http://www.w3.org/1999/xhtml">  
    <head>  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  
        <title></title>  
        <script src="Scripts/underscore.js"></script>  
        <script src="Scripts/jquery-1.11.1.min.js"></script>  
    </head>  
    <body>  
        <!-- 用于显示渲染后的标签 -->  
        <ul id="element"></ul>  
      
        <!-- 定义模板,将模板内容放到一个script标签中 -->  
        <script type="text/template" id="tpl">  
            <% for(var i = 0; i < list.length; i++) { %>  
            <% var item = list[i] %>  
            <li>  
                <span><%=item.firstName%> <%=item.lastName%></span>  
                <span><%-item.city%></span>  
            </li>  
            <% } %>  
        </script>  
      
        <script type="text/javascript">  
            // 获取渲染元素和模板内容  
            var element = $('#element'),  
                tpl = $('#tpl').html();  
      
            // 创建数据, 这些数据可能是你从服务器获取的  
            var data = {  
                list: [  
                    { firstName: '<a href="#">Zhang</a>', lastName: 'San', city: 'Shanghai' },  
                    { firstName: 'Li', lastName: 'Si', city: '<a href="#">Beijing</a>' },  
                    { firstName: 'Wang', lastName: 'Wu', city: 'Guangzhou' },  
                    { firstName: 'Zhao', lastName: 'Liu', city: 'Shenzhen' }  
                ]  
            }  
      
            // 解析模板, 返回解析后的内容    
            var render = _.template(tpl);    
            var html = render(data);    
            // 将解析后的内容填充到渲染元素    
            element.html(html);   
        </script>  
    </body>  
    </html>        
    

     

    在本例中,我们将模板内容放到一个<script>标签中,你可能已经注意到标签的type是text/template而不是text/javascript,因为它无法作为JavaScript脚本直接运行。
     
    我也建议你将模板内容放在<script>中,因为如果你将它们写在一个<div>或其它标签中,它们可能会被添加到DOM树中进行解析(即使你隐藏了这个标签也无法避免)。
     
    .template模板函数只能解析3种模板标签(这比Smarty、JSTL要简单得多):
    <%  %>:用于包含JavaScript代码,这些代码将在渲染数据时被执行。
     
    <%= %>:用于输出数据,可以是一个变量、某个对象的属性、或函数调用(将输出函数的返回值)。
     
    <%- %>:用于输出数据,同时会将数据中包含的HTML字符转换为实体形式(例如它会将双引号转换为&quot;形式),用于避免XSS攻击。
     
    当我们希望将数据中的HTML作为文本显示出来时,常常会使用<%- %>标签。
     
    Underscore还允许你修改这3种标签的形式,如果我们想使用{% %}、{%= %}、{%- %}作为标签,可以通过修改templateSettings来实现,就像这样: 
    _.templateSettings = {    
        evaluate : /{%([sS]+?)\%}/g,    
        interpolate : /{%=([sS]+?)\%}/g,    
        escape : /{%-([sS]+?)%}/g    
    }  
    

    .

  • 相关阅读:
    Spring中的AOP实现思路
    手写IOC-SPRINGPMVC-CONNPOOL
    职责链模式
    判断一个二叉树是不是对称二叉树
    合并区间
    shell命令中用source 和sh(或者bash)执行脚本的区别,以及export的作用
    angular指令的compile,prelink 和 postlink以及controller
    angular的启动原理
    高并发优化方法
    搭建ssm框架的一个小坑
  • 原文地址:https://www.cnblogs.com/crazycode2/p/6911383.html
Copyright © 2011-2022 走看看