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    
    }  
    

    .

  • 相关阅读:
    HDU 1269 迷宫城堡
    HDU 4771 Stealing Harry Potter's Precious
    HDU 4772 Zhuge Liang's Password
    HDU 1690 Bus System
    HDU 2112 HDU Today
    HDU 1385 Minimum Transport Cost
    HDU 1596 find the safest road
    HDU 2680 Choose the best route
    HDU 2066 一个人的旅行
    AssetBundle管理机制(下)
  • 原文地址:https://www.cnblogs.com/crazycode2/p/6911383.html
Copyright © 2011-2022 走看看