Привязка TypeScript и Knockout к этой проблеме - нужна ли лямбда-функция?
Я создавал функцию htmlHelper, используя TypeScript и KnockoutJS для редактирования списка электронных писем.
Список электронных писем - это Knockout ObservableArray, называемыйэлектронная почтаи у меня есть ссылка на каждый элемент, чтобы удалить их. Это фрагмент HTML:
<ul data-bind="foreach: emails" >
<li>
<a href="#" data-bind="click: $parent.deleteItem">Delete</a>
<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, но я не могу найти правильный способ написать это (есть несколько примеров).
Или я мог бы использовать другой подход?