2014-01-14 41 views
1

因此,假设我有这样的视图模型命名为它由一个数组人对象文本的,像

[{ name = John, age = 30, sex = male }, 
{ name = Mike, age = 29, sex = male }, 
{ name = Anna, age = 28, sex = female }] 

再假设我想数据绑定每个人的<li>,像

<ul data-bind="foreach: people"> 
    <li data-bind="text: name"></li> 
</ul> 

,是有可能的,也许通过data-bind="with: $data",将整个人的对象绑定到<li>,例如,当我点击<li>时,其他一些<div>会显示其余的信息,在本例中这些信息是年龄和性别?

这就像我想<li>来保存人物数据,所以我可以在别的地方使用它。

回答

4

一般情况下,你想创建这样一个selectedPerson观察到在视图模型水平,那么你可以这样做:

<ul data-bind="foreach: people"> 
    <li data-bind="click: $parent.selectedPerson"> 
     <span data-bind="text: name"></span> 
     <div data-bind="visible: $parent.selectedPerson() === $data"> 
       <span data-bind="text: age"></span> 
     </div> 
    </li> 
</ul> 

你当然可以使用周围的名称的链接/按钮,如果你喜欢。当你点击它时,selectedPerson将用作处理程序,并将当前数据作为第一个参数传递。因为,selectedPerson实际上是可观察的,所以它将填充数据作为它的值。

否则,你当然可以有另一个区域,以显示在您做的详细信息:

<div data-bind="with: selectedPerson"> 
    .... 
</div> 

快速小提琴:http://jsfiddle.net/rniemeyer/8dRZ4/