TypeScript i powiązanie Knockout z problemem „this” - potrzebna jest funkcja lambda?

Tworzyłem funkcję htmlHelper, używając TypeScript i KnockoutJS do edycji listy e-maili.

Listą e-maili jest Knockout ObservableArray zwanye-mailei mam link do każdego elementu, aby je usunąć. To jest fragment HTML:

<ul data-bind="foreach: emails" >
    <li>
        <a href="#" data-bind="click: $parent.deleteItem">Delete</a>
        &nbsp;<span data-bind="text: $data"></span>
    </li>
</ul>

Link usuwania jest powiązany z$ parent.deleteItem jest to metoda w modelu widoku:

// remove item
public deleteItem(emailToDelete: string) {
    // remove item from list
    this.emails.remove(emailToDelete);
}

To wszystko działa, dopóki nie zostanie wykonana metoda deleteItem. „This” w tej metodzie, gdy jest wywoływana, jest elementem tablicy, a nie modelem widoku. W związku z tym this.emails jest pustym odnośnikiem i kończy się niepowodzeniem.

Wiem, że TypeScript obsługuje składnię Lambda, ale nie mogę znaleźć odpowiedniego sposobu na jej napisanie (jest tam kilka przykładów).

Czy może mam inne podejście?

questionAnswers(8)

yourAnswerToTheQuestion