14

为什么,当我尝试使用 knockout.js 使用 $index 绑定一些文本时,我得到的是函数的代码而不是数字?

<tbody  data-bind="foreach: MyList">
  <tr>
    <td><span data-bind="text: $index + 1"></span></td>
  </tr>
</tbody>

我没有得到 1、2、3 等,而是得到了这个:

在此处输入图像描述

您可以通过上图中的最后一个字符看到,我的零索引被添加到 1。如果我从绑定中删除“+ 1”,我会得到 0、1、2 而不是函数。

我如何告诉淘汰赛评估表达式?我在提交表单时遇到了同样的问题。我的字符串字段作为函数而不是值提交。

4

2 回答 2

32

$index 是一个 observable,它是一个函数。尝试<span data-bind="text: $index() + 1"></span>

于 2012-07-02T23:11:41.160 回答
4

如果你使用

<span data-bind="text: $index() + 1"></span> 

例如,您的索引值为 2,您的跨度文本将为:21 而不是 3。

您应该在 viewModel 中定义一个函数,如下所示:

self.itemNumber = function(index) {
    return index + 1;
}

然后在你的范围内你应该做:

<span data-bind="text: $root.itemNumber($index())"></span>

我希望这个能帮上忙 :)

于 2013-02-06T10:43:25.920 回答