【问题标题】:How can i access index of foreach when iterating through ko.computed in knockout.js在knockout.js中遍历ko.computed时如何访问foreach的索引
【发布时间】:2012-01-20 11:00:13
【问题描述】:

我正在使用 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);
});

一切正常,只尝试了 outputtung text:test,它为每个页面编写测试,但我想要数字。所以最简单的方法当然是在foreach和+1中访问当前索引。

我怎么能做到这一点?

【问题讨论】:

标签: javascript foreach indexing paging knockout.js


【解决方案1】:

问题可能出在您计算的 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建议

【讨论】:

  • tyvm :) 忘记将其作为第二个参数发送到其他几个地方的 ko.computed 解决了这个问题和其他一些问题
【解决方案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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-29
    • 2011-06-14
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    相关资源
    最近更新 更多