Jak rozumiem, $index
jest dostępny wewnątrz wiązania foreach:
, podając indeks obiektu ... Mam powiązanie click:
, np. click:foo
, muszę uzyskać dostęp do $index
wewnątrz foo
.
Czy istnieje sposób?
Jak rozumiem, $index
jest dostępny wewnątrz wiązania foreach:
, podając indeks obiektu ... Mam powiązanie click:
, np. click:foo
, muszę uzyskać dostęp do $index
wewnątrz foo
.
Czy istnieje sposób?
tak,
<input type="button" data-bind="click: function(data, event) { myClickHandler($index, data, event); }"/>
Zamiast hacking wokół niego przez komórki w wiązaniu, wystarczy, aby uzyskać kontekst wiążący. Dopóki masz dostęp do elementu DOM powiązanego z powiązaniem, możesz uzyskać kontekst powiązania i wszystkie jego właściwości za pomocą funkcji ko.contextFor()
.
Obiekt zdarzenia, który otrzymasz w programie obsługi, zapewnia dostęp do węzła za pośrednictwem właściwości target
. Chwyć kontekst za pomocą tego.
var viewModel = {
foo: function (data, event) {
var context = ko.contextFor(event.target);
// do stuff with context.$index()
}
};
Ponieważ '$ index' jest obserwowalny, musiałem zrobić' context. $ Index() 'z nawiasami, ponieważ obserwowalne są funkcjami nokautu http://goo.gl/TIGYV1 – andrewcockerham
To smutne, ale prawdziwe. – jessegavin
Zgadzam się z domyślnym handler dla kliknięć, rozmycia i tak dalej powinien przekazać więcej informacji zamiast tylko danych i zdarzenia. Używam niestandardowego wiązania, jeśli powyższe szybkie oszukiwanie nie pasuje do rozwiązania. – ethermal