zoukankan      html  css  js  c++  java
  • artTemplate的使用总结

    原生语法

    使用原生语法,需要导入template-native.js文件。

    在HTML中定义模板,注意模板的位置,不要放到被渲染区域,防止模板丢失。

    <script id="main_panel_big_sale_template" type="text/html">
        <% for (var i = 0; i < products.length; i ++) { %>
            <% var product =products[i]; %>
            <% if (i < 3) { %>
                <li>
                    <img src="<%=getImageUrl(product.pictographicIconList[0].image.url)%>" data-imgname="<%=product.pictographicIconList[0].image.url%>">
                    <div class="flash-time-box">
                        <span>2015-02-09</span>
                    </div>
                    <strong class="marque"><%=product.name%></strong>
                    <strong class="libelle"><%=product.description%></strong>
                    <div class="no-picto">
                        <span class="prod-tip">
                            <img src="img/grey.png" data-original="img/icon.png">
                        </span>
                        <span class="italic black">
                            <span class="cny-curr">¥&nbsp;<%=formatPrice(product.promoPrice,'integer')%></span><span class="decimal"><%=formatPrice(product.promoPrice,'decimal')%></span>
                        </span>
                    </div>
                </li>
            <% } %>
        <% } %>
    </script>

    template(id, data)

    渲染数据到页面

    $('#main_panel').html(template('main_panel_big_sale_template', data));

    简洁语法

    使用简洁语法,导入template.js文件。

    <script id="main_panel_big_sale_template" type="text/html">
       {{each products as product i}}
       {{if i < 3}}
           <li>
               <img src="{{product.pictographicIconList[0].image.url | getImageUrl}}" data-imgname="{{product.pictographicIconList[0].image.url}}">
               <div class="flash-time-box">
                   <span>2015-02-09</span>
               </div>
               <strong class="marque">{{product.name}}</strong>
               <strong class="libelle">{{product.description}}</strong>
               <div class="no-picto">
                    <span class="prod-tip">
                        <img src="img/grey.png" data-original="img/icon.png">
                    </span>
                    <span class="italic black">
                        <span class="cny-curr">¥&nbsp;{{product.price.value | formatPrice: 'integer'}}</span><span class="decimal">{{product.price.value | formatPrice: 'decimal'}}</span>
                    </span>
               </div>
           </li>
       {{/if}}
       {{/each}}
    </script>

    渲染数据到页面,和原生语法一样

    $('#main_panel').html(template('main_panel_big_sale_template', data));

    调用外部函数

    template.helper

    上面的例子中,都调用了formatPrice函数,要调用此函数需要通过helper方法注册:

    template.helper('formatPrice', function(price, type) {
        if(price){
            var arrayPrice = price.toString().split(".");
            if(type == 'integer') {
                return arrayPrice[0]?arrayPrice[0]:"0";
            }else if (type =='decimal') {
                return arrayPrice[1]?arrayPrice[1].length == 1?"."+arrayPrice[1]+"0":"."+arrayPrice[1]:".00";
            }
        }else{
            if(type == 'integer') {
                return "0";
            }else if (type =='decimal') {
                return ".00";
            }
        }
    });

    原生语法与简洁语法比较

    语法类型调用外部函数
    原生 <%=formatPrice(product.promoPrice,'integer')%>
    简洁 {{product.price.value | formatPrice: 'integer'}}

    简洁语法的传参有点奇怪,原生语法就很好理解,如果要传递三个参数,简洁语法该怎么写呢?

    简洁语法的循环如果要做更多逻辑,也实现不了

    推荐使用原生语法

    template.compile

    模板可以直接写在JS中,再编译渲染。

    var source = '<ul>'
    +    '<% for (var i = 0; i < list.length; i ++) { %>'
    +        '<li>索引 <%= i + 1 %> :<%= list[i] %></li>'
    +    '<% } %>'
    + '</ul>';
    
    var render = template.compile(source);
    var html = render({list: ['摄影', '电影', '民谣', '旅行', '吉他']});
    document.getElementById('content').innerHTML = html;

    这种方式的的缺点是,模板通过字符串拼接,不好维护,适合简单模板



    文/ilaoke(简书作者)
    原文链接:http://www.jianshu.com/p/483fa7f6f55b
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
  • 相关阅读:
    详解PhpStudy集成环境升级MySQL数据库版本
    Mysql5.5升级到5.7的过程已经踩到的坑
    phpStudy中升级MySQL版本到5.7.17的方法步骤
    Windows上使用Vagrant打造Laravel Homestead可协同跨平台开发环境
    百度云下载加速的
    libsvm的安装,数据格式,常见错误,grid.py参数选择,c-SVC过程,libsvm参数解释,svm训练数据,libsvm的使用详解,SVM核函数的选择
    RBF神经网络的matlab简单实现
    spark mllib docs,MLlib: RDD-based API
    目前所有的ANN神经网络算法大全
    Spark1.6.1 MLlib 特征抽取和变换
  • 原文地址:https://www.cnblogs.com/biglion/p/5977109.html
Copyright © 2011-2022 走看看