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

问题描述 投票:0回答:2

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

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

在我的视图模型中

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

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

我怎样才能做到这一点?

javascript indexing foreach knockout.js pagination
2个回答
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); 

然后您可以尝试 ColinE 的建议

text: this


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>
© www.soinside.com 2019 - 2024. All rights reserved.