如何在knockout.js中迭代ko.computed时访问foreach的索引

时间:2012-01-20 11:00:14

标签: javascript foreach indexing paging knockout.js

我正在使用knockout.js在客户端构建分页列表,并且我尝试使用以下代码输出页面索引,以便我可以使用数字点击链接,以便人们可以切换页面。

<ul data-bind="foreach:Paging">
 <li>
<a href="#" data-bind="click: $root.SetCurrentPage(), text: WHATTOWRITEHERE "></a>
</li>
 </ul>

在我的viewmodel中

this.Paging = ko.computed(function () 
{
  return ko.utils.range(1, this.TotalPages);
});

一切正常,尝试输出文本:测试并为每个页面编写测试,但我想要数字。所以最简单的方法当然是访问foreach和+ 1中的当前索引。

我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

问题可能在于你的计算ko。您尚未将其绑定到this。所以而不是:

this.Paging = ko.computed(function ()   
{  
  return ko.utils.range(1, this.TotalPages);  
}); 

..试试......

this.Paging = ko.computed(function ()  
{ 
  return ko.utils.range(1, this.TotalPages); 
}, this); 

然后,您可以尝试使用text: this

的ColinE建议

答案 1 :(得分:2)

在绑定中使用this时,它将引用窗口对象。你应该像这样使用$data

<a href="#" data-bind="click: $root.SetCurrentPage(), text: $data"></a>

我使用此标记对其进行了测试,并按预期工作:

<!-- returns 12345678910 -->
<div data-bind="foreach: ko.utils.range(1,10)"><span data-bind="text: $data"></span></div>