foreach绑定用来处理数组,通常用来将一个数组绑定到一个列表或者table中。在foreach绑定中,我们可以使用if、with等嵌套绑定。
示例代码:
//.W片段
<table>
<thead>
<tr><th>First name</th><th>Last name</th></tr>
</thead>
<tbody bind-foreach="people">
<tr>
<td bind-text="firstName"></td>
<td bind-text="lastName"></td>
</tr>
</tbody>
</table>
//.js片段
people=[
{ firstName: 'Bert', lastName: 'Bertington' },
{ firstName: 'Charles', lastName: 'Charlesforth' },
{ firstName: 'Denise', lastName: 'Dentiste' }
]
绑定规则:
people是一个数组,foreach绑定将会遍历这个数组,将每一项生成一个tr,然后添加在tbody中。
binding context
在foreach中,我们可以使用绑定上下文,完整的绑定上下文包括:
- $data:当前项的数据
- $index:当前项的序号
- $parent:当前项的父级数据
要了解更多,请参考完整的数据上下文。
$data示例:
//.W片段
<ul bind-foreach="months">
<li>
The current item is: <b data-bind="text: $data"></b>
</li>
</ul>
//.js片段
months= ['Jan', 'Feb', 'Mar', 'etc']
如果$data是一个json对象,可以这样使用:
<td bind-text="$data.firstName"></td>
$index和$parent示例:
<h1 bind-text="blogPostTitle"></h1>
<ul bind-foreach="likes">
<li>
<b bind-text="name"></b> likes the blog post
<b bind-text="$parent.blogPostTitle"></b>
</li>
</ul>
使用别名 as
尽管可以方便的使用上下文数据,但有些时候给$data起一个更有意义的别名更容易理解,我们来看看as关键字的用法:
<ul bind-foreach="{ data: people, as: 'person' }"></ul>
在这段代码中,people的每一个数据项被当作person来访问,其实person就是$data
下面是一个完整的例子
//.W片段
<ul bind-foreach="{ data: categories, as: 'category' }">
<li>
<ul bind-foreach="{ data: items, as: 'item' }">
<li>
<span bind-text="category.name"></span>:
<span bind-text="item"></span>
</li>
</ul>
</li>
</ul>
//.js片段
categories=justep.Bind.observableArray([
{ name: 'Fruit', items: ['Apple', 'Orange', 'Banana'] },
{ name: 'Vegetables', items: ['Celery', 'Corn', 'Spinach'] }
])
不使用container
在前面的内容中我们介绍了使用虚拟节点来完成绑定,这种虚拟节点同样能够用在foreach绑定中,示例代码:
//.W片段
<ul>
<li class="header">Header item</li>
<!-- justep.Bind foreach: myItems -->
<li>Item <span bind-text="$data"></span></li>
<!-- /justep.Bind-->
</ul>
//.js片段
myItems=['A', 'B', 'C']
这种方法非常实用。
本文由WeX5君整理,WeX5一款开源免费的html5开发工具,H5 App开发就用WeX5!
阅读其他app 开发相关文章:http://doc.wex5.com/?p=3443
//.js片段
months= [‘Jan’, ‘Feb’, ‘Mar’, ‘etc’]
//.js片段
months= [‘Jan’, ‘Feb’, ‘Mar’, ‘etc’]ssss