Привязка TypeScript и Knockout к этой проблеме - нужна ли лямбда-функция?

Я создавал функцию htmlHelper, используя TypeScript и KnockoutJS для редактирования списка электронных писем.

Список электронных писем - это Knockout ObservableArray, называемыйэлектронная почтаи у меня есть ссылка на каждый элемент, чтобы удалить их. Это фрагмент 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>

Ссылка для удаления привязана к$ parent.deleteItem это метод в модели представления:

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

Это все работает до тех пор, пока не будет выполнен метод deleteItem. «This» в этом методе, когда он вызывается, является элементом массива, а не моделью представления. Следовательно this.emails является нулевой ссылкой и завершается ошибкой.

Я знаю, что TypeScript поддерживает синтаксис Lambda, но я не могу найти правильный способ написать это (есть несколько примеров).

Или я мог бы использовать другой подход?

Ответы на вопрос(8)

Ваш ответ на вопрос