for array 循环数组
循环使用案例
定义数组数据
var data = { names: ["Maradona","Pele","Ronaldo","Messi"] }
模版中使用
{{for names}} <div> <b>{{: #index+1}}.</b> <span>{{: #data}}</span> </div> {{/for}}
输出结果
1. Maradona 2. Pele 3. Ronaldo 4. Messi
索引可以在循环中通过特殊字面量#index获取,特殊字面量#data相当于this,在本例中表示每一个name。
另jsrender中使用for循环时如使用if等判断时虽然不创建常规数据作用域,但却干扰了隐藏作用域。也就是说,{{if }}不会阻断常规数据(你传入的数据)的可见性,但会干扰隐藏数据(#index、#parent)的可见性。
所以获取索引下标时尽量使用#getIndex()获取索引,避免使用#index,除非你的应用足够简单。
可以尝试下面两者使用后的区别对比
1.
{{for names}} {{if #data.indexOf("M") == 0}} <div> <b>{{: #index+1}}.</b> <span>{{: #data}}</span> </div> {{/if}} {{/for}}
2.
{{for names}} {{if #data.indexOf("M") == 0}} <div> <b>{{: #getIndex()+1}}.</b> <span>{{: #data}}</span> </div> {{/if}} {{/for}}
for object 进入object中
这里for不代表循环,表示进入到object对象中。把当前的上下文设置为Object,类似于Handlebars.js中的with。
举个例子:
var data = { "title": "The A team", "members": [ { "name": "Pete", "city": "members_city", "address": { "city": "address_city", "city1": "address_city1", "city2": "address_city2" } } ] }
模版
{{for members}} {{for address}} <p>.{{:city}}</p> {{/for}} {{/for}}
结果
address_city
从结果可以看出,虽然members的item下也有city属性,但由于通过{{for address}}进入到了address指向的Object中,{{:city}}直接从address中获取了。
同时,address有三个属性,但结果只输出了一行,证明{{for Object}}是不会循环的,仅仅是切换一下this。
时间: 2024-11-03 08:03:52