90

在 knockout.js 2.1.0 中,在使用 foreach 绑定的模板中,您可以通过 $index() 函数访问当前项目的索引。在嵌套的 foreach 绑定中,有没有办法从模板访问 $parent 的索引?

假设我有这样的数据结构:

var application = {
  topModel: [
    {
      {subModel: [{'foo':'foo'}, { 'bar':'bar'}]}, // this has top:0 and sub:0
      {subModel: [{'foo2':'foo2'}, { 'bar2':'bar2'}]} // this has top:0 and sub:1
    },
    {
      {subModel: [{'foo':'foo'}, { 'bar':'bar'}]} // this is top:1 sub:0
    },
    {
      {subModel: [{'foo':'foo'}, { 'bar':'bar'}]} // this is top:2 sub:0
      {subModel: [{'foo':'foo'}, { 'bar':'bar'}]} // this is top:2 sub:1
    },
    ...
    ]};

有了这个,我想打印每个模型的路径,使用索引:[topModel-index subModel-index],这样输出将类似于:

[0 0]
[0 1]
[1 0]
[2 0]
[2 1]
...

我已经使用 foreach 绑定了模型,但我不知道如何在 subModel 的上下文中访问 topModel 的索引。下面的示例显示了我尝试过的一种方法,但它不起作用,因为我不知道如何访问 $parent 引荐来源网址的索引。

<!--ko foreach: topModel -->
<!--ko foreach: subModel -->
  [<span data-bind="text: $parent.index()"></span>
  <span data-bind="text: $index()"></span>]
<!--/ko-->
<!--/ko-->

应该打印出:0 1, 0 2, 1 0, 1 1, 1 2, 2 0, 2 1, ...

4

2 回答 2

190

访问父对象的索引使用

$parentContext.$index()

而不是

$parent.index()
于 2012-06-13T10:56:58.430 回答
3

你能找到的最简单的方法是下载 chrome 的“knockout context”。这向您显示了哪些数据绑定到了哪些元素,还可以让您查看该特定绑定元素的可用函数/变量。对于此类情况,这是一个了不起的工具。

于 2016-05-16T07:15:40.250 回答