Knockout.js 在绑定中使用$index时,Knockout不是对表达式求值

Knockout.js 在绑定中使用$index时,Knockout不是对表达式求值,knockout.js,knockout-2.0,Knockout.js,Knockout 2.0,为什么当我尝试使用knockout.js使用$index绑定一些文本时,我得到的是函数的代码而不是数字 <tbody data-bind="foreach: MyList"> <tr> <td><span data-bind="text: $index + 1"></span></td> </tr> </tbody> 我得到的不是1、2、3等,而是: 您可以通过上图中的最后一

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

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

我得到的不是1、2、3等,而是:

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


如何让knockout对表达式求值?我在提交表格时遇到了同样的问题。我的字符串字段将作为函数而不是值提交。

$index是一个可观察的函数。如果您使用

<span data-bind="text: $index() + 1"></span> 
然后在你的时间跨度内,你应该做:

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


我希望这会有所帮助:)

解决了它。为什么文档中没有parens的示例?在表达式中使用可观测值是一个普遍问题。如果您单独使用observable,绑定将只接受observable,但是当您开始在表达式中包含observable时,您必须使用()形式来访问实际值。请参阅“读写观察值”。+1了解一个简单的事实,即如果索引为2,那么通过使用可接受的回答技巧,您可以得到21、23左右,而不是3、4 ecc。我不明白接受答案是如何被接受的,它只是错了(至少对于击倒2.2.1是这样)
<span data-bind="text: $root.itemNumber($index())"></span>