JS技术

jQuery模板:jQuery Templates Proposal_Javascript教程(5)

字号+ 作者:H5之家 来源:H5之家 2015-10-01 11:18 我要评论( )

script type=text/javascript jQuery(function(){ var products = [ { name: aclick here/a, price: 12.99}, { name: Product 2, price: 9.99}, { name: Product 3, price: 35.59} ]; $(ul).append(#template, prod

<script type="text/javascript">
jQuery(function(){
  var products = [
        { name: "<a>click here</a>", price: 12.99},
        { name: "Product 2", price: 9.99},
        { name: "Product 3", price: 35.59}
  ];
  $("ul").append("#template", products);
});
</script>
<script id="template" type="text/html">
 <li>{%= name %} - {%= price %}</li>
</script>
<ul></ul>
 

为了很容易的在一个模板中给要显示的数据进行HTML编码,使你免遭这种XSS的进攻,可以使用一个名为text()的内置函数。text()函数将一个数据项转换成文本节点。这里告诉你如何使用text()函数。

<script type="text/javascript">
jQuery(function(){
  var products = [
        { name: "<a>click here</a>", price: 12.99},
        { name: "Product 2", price: 9.99},
        { name: "Product 3", price: 35.59}
  ];
  $("ul").append("#template", products);
});
</script>
<script id="template" type="text/html">
 <li>{% text(name) %} - {%= price %}</li>
</script>
<ul></ul>
 

代码块
除了表达式,你可以在模板中插入代码执行自定义逻辑、条件或循环。代码块用{%....%}语法来分隔(没有=)。

示例

这个例子显示系列产品的name,如果有可用的“specials”则显示。

<script type="text/html" id="tmp1">
<li>
    {%= name %}
    {% if (specials.length) { %}
    <ul>
    {% for (var i = 0, l = specials.length; i < l; i++) { %}
        <li>{%= specials[i].details %}</li>
    {% } %}
    </ul>
    {% } %}
</li>
</script>

上下文
在模板中,你可以使用一个名叫$context 的特殊变量,这与提案后面要描述的rendering和rendered回调是同一个对象。$context具有以下属性:

 

参数 描述

data 传递给render()和append()函数的数组或对象

dataItem 但是,这个放到with() 块中,使得数据的每一个字段可以直接使用。例如,如果数据为[{name:"dave"},{name:"bob"}] ,那么{%= name } 就可以使用。但是要注意,指向一个不存在的字段将是无效的。数据为[{name:"dave"},{firstname:"bob"}] ,那么第二个表达式“name”将无效。

index 传递给模板的当前数据项在数组中的索引。如果是一个对象,索引为0

options 传递给模板的选项参数。这个提供了给模板传递额外参数的方法。

你对$context 变量的修改在模板中将保持一致。例如,你可以在render()函数中给$context 变量添加计算字段。

function rendering(context) {
  context.tax = context.dataItem.price * 0.23;
}
 

你可以在模板中使用tax计算字段,保持模板简单,避免需要调试的内嵌表达式。

<script type="text/html" id="tmp1">
  The product with tax costs {%= $context.tax %}
</script>
 

你可以使用$context.options变量指向任何需要传递给render()和append()函数的选项。下面的示例演示了如何根据传递给append()函数的showSalePrice 参数值来显示正常价格或零售价格。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评