Mustache 使用说明
Mustache 使用说明
最近在升级SinGooCMS到MVC架构。管理前端使用了Mustache模板,把使用心得记录一下!
一、官网
http://mustache.github.io/
https://github.com/mustache/mustache.github.com
https://www.bootcdn.cn/mustache.js/
从上面网都能获取到Mustache.min.js
二、基本语法
{{keyName}}
{{#keyName}} {{/keyName}}
{{^keyName}} {{/keyName}}
{{.}}
{{<partials}}
{{{keyName}}}
{{!comments}}
Mustache的语法很简单,就上面几个,{{keyName}}读取属性值,{{{keyName}}}读取属性值且原样输出,即HTML不编码。{{#keyName}} {{/keyName}}用于遍历,{{^keyName}} {{/keyName}}反义数据,当keyName不存在、null值,false时起作用。
{{.}}用于遍历数组
{{!comments}} 注释
三、使用技巧
1)if-else
{{#name}}...{{/name}} 当name有值时显示
{{^name}}...{{/name}} 当name为null,undefined,甚至json数据里没有这个name字段时会显示
示例:
模板:
<div>{{name}}</div>
数据:
var json = {"result":{}};
此时渲染模板会报错,提示没有name属性。
模板改成如下,即使没有name也不会报错。这样添加和修改就可以共用一个模板了。
{{#result}}
<div>{{name}}</div>
{{/result}}
2)遍历
常用于显示异步列表。
var json={"result":{"data":[{"AdName":"广告1","AdType":"文本广告"}]},"pager":{}}
{{#data}}
<tr>
<td>{{AdName}}</td>
<input type="number" name="txtSort" value="{{Sort}}" id="txtSort" step="1" />
</tr>
{{/data}}
{{^data}}
<tr><td colspan='7'> 没有找到任何数据</td></tr>
{{/data}}
//渲染
Mustache.render(tmpl, json.result);
{{#data}}...{{/data}}对应json.result.data里面数据进行遍历。在没有值时显示{{^data}...{{/data}}的内容。
3)json扩展
mustache的逻辑处理很有限,所以在模板里进行判断是不可能的。比如下拉列表,需要判断当前选中就实现不了。
那就得在json中打主意。
<select name="ddlADType" id="ddlADType">
{{{droplist}}}
</select>
var json = @Html.Raw(ViewBag.InitData);
json.result.droplist=function(){ //扩展一个字段
var str="";
var arr=new Array("文本广告","图片广告","Flash广告","视频广告");
for(var i=0;i<arr.length;i++)
str+="<option value='"+i+"' "+(json.result.AdType==i?"selected='selected'":"")+" >"+arr[i]+"</option>";
return str;
};
渲染的效果如下,实现了选中状态
<select name="ddlADType" id="ddlADType">
<option value="0">文本广告</option>
<option value="1" selected="selected">图片广告</option>
<option value="2">Flash广告</option>
<option value="3">视频广告</option>
</select>
4)radio 和 checkbox数据绑定
由于没有if-else条件判断,对于表单组可以参照上面组织元素再输出。
对于单个表单。字段值为bool型可以用以下方法。
<input name="isaudit" type="checkbox" id="isaudit" class="common-check" {{#IsAudit}}checked="checked"{{/IsAudit}} />
5)列表显示有意义的描述
当json数据有AdType=0时,前台显示肯定没有意义。应该显示为“文本广告”。前端json可以做如上扩展的判断,也可以在后台进行处理。
//以下是json的部分需要替换成有意义的描述
Func<int, string> GetEnumDesc = (adType) =>
{
return dataJson.Replace("\"AdType\":" + adType + "", "\"AdType\":\"" + EnumUtils.GetEnumDescription((AdsType)adType) + "\"");
};
foreach (var item in Enum.GetValues(typeof(AdsType)))
{
dataJson = GetEnumDesc((int)item); //把数字转成枚举的文字描述
}
dataJson = new Regex(@" (\d+):(\d+):(\d+)").Replace(dataJson, ""); //时间部分不要了
dataJson = dataJson.Replace("\"IsAudit\":true", "\"IsAudit\":\"<span style='color:blue'>已审核</span>\"")
.Replace("\"IsAudit\":false", "\"IsAudit\":\"未审核\"");
Mustache 使用说明的更多相关文章
- javascript库之Mustache库使用说明
一.简单示例 代码: function show(t) { $("#content").html(t); } var view = { title: 'YZF', cacl: fu ...
- Atitit.项目修改补丁打包工具 使用说明
Atitit.项目修改补丁打包工具 使用说明 1.1. 打包工具已经在群里面.打包工具.bat1 1.2. 使用方法:放在项目主目录下,执行即可1 1.3. 打包工具的原理以及要打包的项目列表1 1. ...
- awk使用说明
原文地址:http://www.cnblogs.com/verrion/p/awk_usage.html Awk使用说明 运维必须掌握的三剑客工具:grep(文件内容过滤器),sed(数据流处理器), ...
- 微信小程序技术分析:Mustache语法要点总结
小程序开发的wxml里,用到了Mustache语法.所以,非常有必要把Mustache研究下. 什么是Mustache?Mustache是一个logic-less(轻逻辑)模板解析引擎,它是为了使用户 ...
- “我爱背单词”beta版发布与使用说明
我爱背单词BETA版本发布 第二轮迭代终于画上圆满句号,我们的“我爱背单词”beta版本已经发布. Beta版本说明 项目名称 我爱背单词 版本 Beta版 团队名称 北京航空航天大学计算机学院 拒 ...
- Oracle 中 union 和union all 的简单使用说明
1.刚刚工作不久,经常接触oracle,但是对oracle很多东西都不是很熟.今天我们来了解一下union和union all的简单使用说明.Union(union all): 指令的目的是将两个 S ...
- Map工具系列-02-数据迁移工具使用说明
所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...
- Map工具系列-03-代码生成BySQl工具使用说明
所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...
- jQuery验证控件jquery.validate.js使用说明
官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 转载 ...
随机推荐
- 文件os.path相关方法
#!/usr/bin/python3# -*- coding: utf-8 -*-# @Time : 2018/6/13 15:03# @File : abspath_1.py impor ...
- nginx收到空包问题
tcpdump有收包,但是nginx的access.log显示post数据为空 可以通过tcpdump监控端口 http://www.cnblogs.com/linn/p/4792468.html 修 ...
- 前端基础——AJAX
一 简介 AJAX(Asynchronous Javascript And XML),即AJAX = 异步JavaScript + XML.AJAX是一种用于创建快速动态网页的技术. AJAX两大特 ...
- SQL 基础命令和函数
[数据操作] SELECT --从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE --更新数据库表中的数据 [数据定义] C ...
- sql 备忘
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; select dbms_metadata.get_ddl('TABLE','TAB ...
- Vim插件之ale,LeaderF,completor.vim(win10)配置
内容包含 vim-plug,异步插件管理,总之就是下起来快. ale,异步语法检查 LeaderF,快速查找文件 completor.vim vim8的快速补全 markdown预览 common s ...
- 更改Eclipse里的Classpath Variables M2_REPO
M2_REPO这个classpath variable 是不能改变的. 为什么 Eclipse 里的 Classpath Variables M2_REPO 无法修改(non modifiable) ...
- ArcGIS GP服务的发布及调用
参考https://www.jianshu.com/p/5331fa708fe5
- Windows Python 2.7环境搭建
一.安装及修改环境变量 我安装的版本是python-2.7.15.amd64,因为2.7.9之后的版本都会安装好pip.将Python执行文件所在文件夹加入path路径,C:\Python27.将pi ...
- 分析一则halcon抓边拟合直线的小案例
例图: 完整算法: read_image (Image, 'C:/Users/Administrator/Desktop/1.png') threshold (Image, Regions, , ) ...