请考虑以下事项:
<!-- ko foreach: new Array($root.totalPages()) -->
<!-- ko if: $index() + 1 === $root.currentPage() -->
<li class="active"><a href="#" data-bind="text: $index() + 1"></a></li>
<!-- /ko -->
<!-- ko if: $index() + 1 !== $root.currentPage() -->
<li><a href="#" data-bind="click: $root.navigateToPageNum.bind($index() + 1), text: $index() + 1"></a></li>
<!-- /ko -->
<!-- /ko -->
重要的部分是click: $root.navigateToPageNum.bind($index() + 1), ...
问题是当我在所述函数中抛出console.log
时,我得到了未定义。
self.navigateToPageNum = function(pageNumber) {
console.log(pageNumber);
}
这给了我未定义的点击li
链接元素。
totalPages()
是7,所以我在页面上有7个li
个链接。但点击一个给我未定义。
如何将当前索引传递给函数?
答案 0 :(得分:1)
first parameter of bind
是thisArg
,因此当前页码将设置为您函数中的this
:
self.navigateToPageNum = function() {
console.log(this); // will print the page number
}
如果您想保留签名,则需要将$index() + 1
作为第二个参数传递给bind
:
click: $root.navigateToPageNum.bind($data, $index() + 1)
注意:如果您不关心this
中的navigateToPageNum
,您也可以传入null作为bind
的第一个参数。