当页面中引用template.js文件之后,脚本将创建一个TrimPath对象供你使用。
parseDOMTemplate(elementId,optionalDocument) //获得模板字符串代码
得到页面中Id为elementId的DOM组件的InnerHTML,将其解析成一个模板,这个返回一个templateObject对象,解析出错时将抛出一个异常。
optionalDocument一个可选参数,在使用iframe,frameset或者默认多文档时会有用,通常用来做模板的DOM元素师一个隐藏的
以上方法的到的模板(字符串)再经过process()方法进一步解析就得到了最终的源代码。
如:
var result = parseDOMTemplate(elementId,optionalDocument).process(); //用数据替换模板
这个方法也直接能用于解析字符串:
一步到位的方法:
TrimPath.processDOMTemplate(elementId,contextObject,optionalFlags,optionalDocument)
这是一个辅助函数,内部调用TrimPath.parseDOMTemplate()和Process()方法结果就是经过解析后生成的代码。
其作用相当于parseDOMTemplate().process(),即从textarea读取模板后替换数据。
先来看一个最简单的例子:
其实,这个东西与C#,PHP的模板引擎,并没有本质上的区别,都是读入模板,然后替换数据。只不过,C#与PHP等后台语言,一般都从文件里面读取模板,如Html,txt等。而TrimPath就从标签上读取模板。
条件控制示例(if () else()):
循环控制(for forelse /for):
语法结构如下:
{for varName in listExpr} 主循环体 {forelse} 当输入为null,或listExpr数量为0时 {/for}
宏定义:
CDATA区域:
内联js:
结合.Net MVC后台程序再来一把:
{
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult GetJson()
{
Person p1 = new Person(1,"刘备",30);
Person p2 = new Person(2,"关羽",28);
Person p3 = new Person(3,"张飞",36);
List<Person> ListPerson = new List<Person>();
ListPerson.Add(p1);
ListPerson.Add(p2);
ListPerson.Add(p3);
return Json(ListPerson,JsonRequestBehavior.AllowGet);
}
}
public class Person
{
public Person(int id,string name,int age) { Id = id; Name = name; Age = age; }
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
}
<script type="text/javascript">
var data;
$(function() {
$.ajax({
url: "/Home/GetJson",type: 'post',async: true,dataType: 'json',success: function(response) {
data = response;
var result = TrimPath.processDOMTemplate("temp",data);
document.getElementById("ShowDiv").innerHTML = result;
}
})
})
输出结果如下: