JsRender for index循环索引用法详解


Posted in Javascript onOctober 31, 2014

本文实例讲述了JsRender for index循环索引用。分享给大家供大家参考。具体分析如下:

JsRedner和JsViews(JsViews是再JsRender基础上的进一步封装)被称为下一代的Jquery模板,官方地址:
https://github.com/BorisMoore/jsrender;
https://github.com/BorisMoore/jsviews。

循环是模版引擎必不可少的一部分,而说起循环,会引出一个至关重要的因素:索引。

所谓索引,即循环次数,通过索引,可以获取当前循环是第几次。

如果读者阅读过官方文档,会见到如下获取索引的方式:

data:

{

   names: ["Maradona","Pele","Ronaldo","Messi"]

}

template markup:
{{for names}}

   <div>

     <b>{{: #index+1}}.</b>

     <span>{{: #data}}</span>

   </div>

 {{/for}}

result:

1. Maradona

 2. Pele

 3. Ronaldo

 4. Messi

索引可以在循环中通过特殊字面量#index获取,特殊字面量#data相当于this,在本例中表示每一个name。

接下来我们搞点小花样,还是上边的例子,只不过这次我希望只显示以M开头的名字:

data:

{

   names: ["Maradona","Pele","Ronaldo","Messi"]

 }

template markup:
{{for names}}

   {{if #data.indexOf("M") == 0}}

     <div>

       <b>{{: #index+1}}.</b>

       <span>{{: #data}}</span>

     </div>

   {{/if}}

 {{/for}}

result:

Unavailable (nested view): use #getIndex()1. Maradona

 Unavailable (nested view): use #getIndex()1. Messi

简单加了个if判断,竟然报错了!

问题就出在#index上,错误提示很明确,让你用#getIndex()代替#index。

试试替换后的代码:

data:

{

   names: ["Maradona","Pele","Ronaldo","Messi"]

 }

template markup:
{{for names}}

   {{if #data.indexOf("M") == 0}}

     <div>

       <b>{{: #getIndex()+1}}.</b>

       <span>{{: #data}}</span>

     </div>

   {{/if}}

 {{/for}}

result:

1. Maradona

 4. Messi

这是为什么呢?简单说,就是因为{{if }}虽然不创建常规数据作用域,但却干扰了隐藏作用域。也就是说,{{if }}不会阻断常规数据(你传入的数据)的可见性,但会干扰隐藏数据(#index、#parent)的可见性。这样简单理解就可以了,不必深究,因为这仅仅是此框架的缺陷,并不是标准。

因此,本文给读者一个很重要的结论:尽量使用#getIndex()获取索引,避免使用#index,除非你的应用足够简单。

希望本文所述对大家JsRender的学习有所帮助。

Javascript 相关文章推荐
地震发生中逃生十大法则
May 12 Javascript
jquery 最简单易用的表单验证插件
Feb 27 Javascript
ECMAScript6中Set/WeakSet详解
Jun 12 Javascript
Javascript实现获取及设置光标位置的方法
Jul 21 Javascript
jquery实现手机号码选号的方法
Jul 31 Javascript
深入理解JS中的Function.prototype.bind()方法
Oct 11 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
Jan 26 Javascript
Javascript中从学习bind到实现bind的过程
Jan 05 Javascript
vue使用rem实现 移动端屏幕适配
Sep 26 Javascript
微信小程序使用字体图标的方法
May 23 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
Mar 31 Javascript
JavaScript对象字面量和构造函数原理与用法详解
Apr 18 Javascript
javascript常用函数归纳整理
Oct 31 #Javascript
让html页面不缓存js的实现方法
Oct 31 #Javascript
js读取cookie方法总结
Oct 31 #Javascript
jQuery获取对象简单实现方法小结
Oct 30 #Javascript
js 通过cookie实现刷新不变化树形菜单
Oct 30 #Javascript
判断字符串的长度(优化版)中文占两个字符
Oct 30 #Javascript
javascript根据时间生成m位随机数最大13位
Oct 30 #Javascript
You might like
PHP实现采集程序原理和简单示例代码
2007/03/18 PHP
juqery 学习之四 筛选查找
2010/11/30 Javascript
fancybox modal的完美解决(右上的X)
2012/10/30 Javascript
javascript中动态函数用法实例分析
2015/05/14 Javascript
jQuery+formdata实现上传进度特效遇到的问题
2016/02/24 Javascript
全面解析Bootstrap中nav、collapse的使用方法
2016/05/22 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
JS实现的表头列头固定页面功能示例
2017/01/10 Javascript
jQuery插件jquery.kxbdmarquee.js实现无缝滚动效果
2017/02/15 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
2018/10/25 Javascript
微信小程序新手教程之页面打开数量限制
2019/03/03 Javascript
详解如何写出一个利于扩展的vue路由配置
2019/05/16 Javascript
vue使用微信JS-SDK实现分享功能
2019/08/23 Javascript
js实现移动端tab切换时下划线滑动效果
2019/09/08 Javascript
Vue使用NProgress的操作过程解析
2019/10/10 Javascript
js生成1到100的随机数最简单的实现方法
2020/02/07 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
Python中的ctime()方法使用教程
2015/05/22 Python
Python3使用requests发闪存的方法
2016/05/11 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
2018/12/26 Python
详解Python用户登录接口的方法
2019/04/17 Python
python爬虫神器Pyppeteer入门及使用
2019/07/13 Python
简单了解python数组的基本操作
2019/11/26 Python
在Pytorch中计算自己模型的FLOPs方式
2019/12/30 Python
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
2021/01/19 HTML / CSS
如何强制垃圾回收
2015/10/06 面试题
工程部经理岗位职责
2015/02/02 职场文书
财务经理岗位职责范本
2015/04/08 职场文书
大学毕业论文致谢词
2015/05/14 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
2016年清明节寄语
2015/12/04 职场文书
浙江省杭州市平均工资标准是多少?
2019/07/09 职场文书
商业计划书如何写?关键问题有哪些?
2019/07/11 职场文书
sqlserver连接错误之SQL评估期已过的问题解决
2022/03/23 SQL Server