underscore模板引擎的小例子

_.template(templateString, [data], [settings])

这是template方法的api,可接受三个参数,其中:

第一个参数也是必须的参数是模版字符串,你可以通过<%=  %> 来插入变量,还可以通过<%  %>来插入js代码,也可以通过<%-  %>来进行html转义,如果变量很多,可以使用<% print() %>来简化。

第二个参数是传入模版的数据,如果不传第二个参数,那么这个方法会返回一个模版函数,这个模版函数可以穿入数据返回完成的模版,如果传入data参数则会直接返回一个已完成的模版。

第三个参数是设置,比如这个方法默认是寻找<%  %>来进行替换。

1.模板文件(tbody.html)

 1         <table class="ui-zx-table" width="100%" class="ms-controller" ms-controller="vmChannelAllocateEdit">
 2              <thead>
 3                 <tr>
 4                    <th width="10%">省份</th>
 5                    <th width="90%" colspan="2">渠道</th>
 6                 </tr>
 7              </thead>
 8
 9              <tbody >
10                <%_.each(data,function(n){%>
11                  <tr>
12                       <td rowspan="2"><%=n.province%></td>
13
14                       <td style="border-bottom:1px dashed;text-align:left;width:100%" class="vidone">全国渠道:
15                           <%_.each(n.qgchannel,function(m){%>
16                               <span class="spank">
17                               <%=m%>
18                               </span>
19                           <% }); %>
20                       </td>
21                       <td rowspan="2" style="width:7%">
22                             <a href="javascript:;" ms-on-click="edit(‘<%=n.provid%>‘)">管理</a>
23                       </td>
24                  </tr>
25                  <tr>
26                        <td style="text-align:left;">省份渠道:
27                            <%_.each(n.provchannel,function(i){%>
28                                <span class="spank" >
29                                <%=i%>
30                                </span>
31                            <% }); %>
32                        </td>
33                  </tr>
34                   <% }); %>
35             </tbody>
36         </table>
37
38                

2.js文件

define([‘global_ref‘,
        ‘module/menuView/channelAllocate/channelAllocate.html‘,
    ],
    function(g, viewHTML,viewEditHTML) {
        var svMap = g.svMap,
            $ = g.$,
            avalon = g.avalon,
            ajax = g.ajax,
            sessionMap = g.sessionMap,
            pager = g.pager,
            dialog = g.dialog;
        //数据接口
        svMap.add(‘qryChannelprovList‘, ‘‘, ‘api/qryChannelprovList‘); 

        var config = require(‘assets/common/province‘);
        var provNameMap = {};
        avalon.each(config.provinceWidthCode,function(idx,item){
            provNameMap[item.code] = item.name;
        });

     /**********模板解析用到的部分********/
        var tbody = require(‘module/menuView/channelAllocate/tbody.html‘);
        var buildEditHTML =  _.template(tbody);
     /******************/
        var vmChannelAllocateMain = avalon.define({
            $id: ‘vmChannelAllocateMain‘,
            //html1:‘‘,
            content:‘‘,
            json:[],
            provid:‘‘,
            qgchannel:[],
            provchannel:[],
            display:function(){
           	 ajax.postJson(svMap.get("qryChannelprovList"), ‘‘,
                function(json, state) {
                    if (state) {
       /**********模板解析用到的部分********/            	vmChannelAllocateMain.content=buildEditHTML({data:json.beans});
       /******************/
                    } else {
                        alert(json.returnMessage);
                    }
                });

           },
        });
        // 定义视图模块
        var viewmod = {
            viewtSrc: viewHTML,
            viewInit: function(name) { //模块view加载完成后的回调方法,在刷新(F5)时可能调用两次
            	vmChannelAllocateMain.display();
            },
            viewDestroy: function() { //切换菜单时销毁原来的view
                 vmChannelAllocateEdit.channelC=[];
                 vmChannelAllocateEdit.channelP=[];
            }
        };
        return viewmod;
    })

 3.HTML部分(解析后的模板需插入到该HTML文件)

<div class="ms-controller" ms-controller="vmChannelAllocateMain">
    <div class="ui-tablewidth mt-10">
        {{content|html}}
    </div>
    <div>  </div>
</div>
时间: 2024-10-11 18:25:49

underscore模板引擎的小例子的相关文章

c/c++ 模板与STL小例子系列&lt;一 &gt;自建Array数组

c/c++ 模板与STL小例子系列<一> 自建Array数组 自建的Array数组,提供如下对外接口 方法 功能描述 Array() 无参数构造方法,构造元素个数为模板参数个的数组 Array(int length) 有参数构造方法,构造元素个数为参数length个的数组 ~Array() 析构函数 int size() 返回数组中元素的个数 T& get(int num) 返回数组中指定下标的元素的引用 void set(T data, int num) 设置指定下标元素的值 T&a

使用模块化思维和模板引擎搭建前端架构(require+underscore)

require.js 介绍: 是一个非常小巧的JavaScript模块载入框架,是AMD规范最好的实现者之一.最新版本的RequireJS压缩后只有14K,堪称非常轻量. 官网:http://www.requirejs.cn/    (PS:如果没接触过,刚开始看都是一头蒙蔽的,建议看下菜鸟教程) 新手教程:http://www.runoob.com/w3cnote/requirejs-tutorial-1.html 优点:可完成团队协作.模块复用.单元测试等等一系列复杂的需求 undersco

模块化思维和模板引擎

使用模块化思维和模板引擎搭建前端架构(require+underscore) require.js 介绍: 是一个非常小巧的JavaScript模块载入框架,是AMD规范最好的实现者之一.最新版本的RequireJS压缩后只有14K,堪称非常轻量. 官网:http://www.requirejs.cn/    (PS:如果没接触过,刚开始看都是一头蒙蔽的,建议看下菜鸟教程) 新手教程:http://www.runoob.com/w3cnote/requirejs-tutorial-1.html

强大的模板引擎开源软件NVelocity

背景知识NVelocity(http://sourceforge.net/projects/nvelocity )是从java编写的Velocity移植的.net版本,是java界超强的模版系统,.net版本的NVelocity目前版本为0.42.NVelocity拥有完善的.丰富的模板语言(VTL,Velocity Template Language) ,几乎所有高级语言的特性都可以在模板引擎语言中找到.(如流程控制语句.数学运算.关系和逻辑操作符.函数定义.注释等等) NVelocity可以

基于.NET的免费开源的模板引擎---VTemplate

最近在搞了一个微商城.弄了一个ZUCK多用户微信公众平台开发源码来玩下.接触到有模板引擎---VTemplate.网上搜了一下.学习中…先收藏… 本文来源于:http://www.cnblogs.com/kingthy/archive/2009/08/17/net-vtemplate.html 1.VTemplate模板引擎的简介 VTemplate模板引擎也简称为VT,是基于.NET的模板引擎,它允许任何人使用简单的类似HTML语法的模板语言来引用.NET里定义的对象.当VTemplate应用

C#模板引擎NVelocity实战项目演练

一.背景需求 很多人在做邮件模板.短信模板的时候,都是使用特殊标识的字符串进行占位,然后在后台代码中进行Replace字符串,如果遇到表格形式的内容,则需要在后台进行遍历数据集合,进行字符串的拼接,继而Replace模板中的占位符 !今天给大家分享一个WinForm方面的模板引擎的小技巧和小技能吧,本次课程阿笨给大家分享关于WinForm开发中如何通过模板引擎NVelocity根据动态数据生成漂亮的订单详细查看页面? 1.1.本次分享课程包含知识点如下: 1).WinForm中WebBrowse

spring boot Thymeleaf模板引擎 最简单输出例子

spring boot  Thymeleaf模板引擎  最简单输出例子 控制器代码如下: @GetMapping(value = "/test")public String test(Model model){ List<Boy> boy = new ArrayList<Boy>(); boy.add(new Boy("xx",11)); boy.add(new Boy("yy",22)); boy.add(new Boy

jdbcTemplate 和 Thymeleaf模板引擎 查询 到模板赋值例子

二.  jdbcTemplate 和 Thymeleaf模板引擎  最简单输出例子 控制器代码 @GetMapping(value = "/test2") public String test2(Model model){ sql = "SELECT * FROM boy "; List queryList = jdbcTemplate.queryForList(sql); model.addAttribute("boy", queryList)

关于 underscore 中模板引擎的应用演示样例

//关于 underscore 中模板引擎的应用演示样例 <!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <title>关于 underscore