我有以下问题:我有一个可观察的数组(从服务器填充),如下所示:
this.elems = ko.observableArray([
{n: 1, t : 'hello'},
{n: 1, t : 'why'},
{n: 1, t : 'are'},
{n: 2, t : 'some'},
{n: 2, t : 'ducks'},
{n: 3, t : 'here'},
{n: 8, t : '?'}
]);
Run Code Online (Sandbox Code Playgroud)
我希望以下列方式展示它:
1
Hello
why
are
2
some
ducks
3
here
8
?
Run Code Online (Sandbox Code Playgroud)
如您所见,仅当前一个数字与当前数字不同时才显示数字.这对于foreach绑定来说非常容易(这是我的jsFiddle).
<div data-bind="foreach: elems">
<div class="t1">
<span data-bind="text: n" class="c1"></span>
<span data-bind="text: t" class="c2"></span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
只有我能够访问前一个元素.我知道我可以修改我的observalbe数组并实现我想要的,但有没有办法在不改变它的情况下做到这一点?
您可以访问$ index和$ parent值.试试这个:
<div data-bind="foreach: elems">
<div class="t1">
<!-- ko if: $index() === 0 || $parent.elems()[$index() - 1].n !== n -->
<span data-bind="text: n" class="c1"></span>
<!-- /ko -->
<span data-bind="text: t" class="c2"></span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
替代使用可见绑定:
<div data-bind="foreach: elems">
<div class="t1">
<span data-bind="text: n, visible: $index() === 0 || $parent.elems()[$index() - 1].n !== n" class="c1"></span>
<span data-bind="text: t" class="c2"></span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1917 次 |
| 最近记录: |