在结合使用$索引时剔除不计算表达式(Knockout is not evaluating an ex

2019-06-26 00:15发布

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

<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,而不是功能。

我如何告诉淘汰赛来计算表达式? 我有同样的问题,当我提交表单。 我的字符串字段被提交的功能,而不是价值。

Answer 1:

$指数是可观察到的,这是一个功能。 尝试<span data-bind="text: $index() + 1"></span>



Answer 2:

如果您使用

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

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

你应该在你的视图模型定义函数,就像这样:

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

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

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

我希望这个能帮上忙 :)



文章来源: Knockout is not evaluating an expression when using $index in a binding