2012-01-20 107 views
4

訪問索引我正在用knockout.js在客戶端建立一個分頁列表,並試圖輸出頁面索引與下面的代碼,所以我得到用數字點擊鏈接,以便人們可以切換頁面。我如何訪問foreach時,通過ko.computed迭代通過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文本:測試,它的每一頁寫入測試,但我想的數字。因此,最簡單的方法當然是訪問foreach中的當前索引和+ 1.

我該如何做到這一點?

+0

你嘗試過「文字:」? – ColinE

+0

我得到這個錯誤「消息:ReferenceError:無效的賦值左邊;」綁定值:text:此 – Kimpo

+0

訪問當前索引:http://stackoverflow.com/questions/6047713/bind-template-item-to-the-index-of-the-array-in-knockoutjs – Luffy

回答

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

+0

tyvm :)忘記發送這個作爲第二參數ko.computed在其他幾個地方解決了這個問題,還有一些其他的 – Kimpo

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>