Я создавал функцию htmlHelper с помощью TypeScript и KnockoutJS для редактирования списка писем.
Список электронных писем представляет собой нокаут ObservableArray, называемый email, и у меня есть ссылка на каждый элемент, чтобы удалить их. Это фрагмент 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, это метод в модели view:
// remove item
public deleteItem(emailToDelete: string) {
// remove item from list
this.emails.remove(emailToDelete);
}
Это все работает до тех пор, пока не будет выполнен метод deleteItem. "this" в этом методе, когда он вызывается, является элементом в массиве, а не моделью представления. Следовательно this.emails является пустой ссылкой и не работает.
Я знаю, что TypeScript поддерживает синтаксис Lambda, но я не могу найти правильный способ написать это (там несколько примеров).
Или есть другой подход, который я мог бы предпринять?