2012-10-24 20 views
16

據我所知,$indexforeach:綁定中可用,給出對象的索引...我有一個click:綁定,例如, click:foo,我需要訪問foo$index

有沒有辦法?

回答

9

是,

<input type="button" data-bind="click: function(data, event) { myClickHandler($index, data, event); }"/> 
+0

這是可悲的,但沒錯。 – jessegavin

+0

我同意點擊,模糊等的默認處理程序應該傳遞更多的信息,而不僅僅是數據和事件。如果上面的快速作弊不適合解決方案,我使用自定義綁定。 – ethermal

36

而不是通過在您綁定的功能它周圍黑客,你只需要獲得綁定上下文。只要您有權訪問與綁定關聯的DOM元素,就可以使用ko.contextFor()函數獲取綁定上下文及其所有屬性。

您在處理程序中獲得的事件對象使您可以通過target屬性訪問該節點。使用它獲取上下文。

var viewModel = { 
    foo: function (data, event) { 
     var context = ko.contextFor(event.target); 
     // do stuff with context.$index() 
    } 
}; 
+3

因爲'$ index'是一個可觀測值,所以我必須使用括號來執行'context。$ index()',因爲可觀察值是敲除http://goo.gl/TIGYV1 – andrewcockerham