我一直在使用TypeScript和KnockoutJS创建一个htmlHelper函数来编辑电子邮件列表.
电子邮件列表是一个叫做电子邮件的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>
Run Code Online (Sandbox Code Playgroud)
删除链接绑定到$ parent.deleteItem这是viewmodel中的方法:
// remove item
public deleteItem(emailToDelete: string) {
// remove item from list
this.emails.remove(emailToDelete);
}
Run Code Online (Sandbox Code Playgroud)
这一切都有效,直到执行deleteItem方法.调用此方法时的"this"是数组中的项,而不是视图模型.因此this.emails是一个空引用并失败.
我知道TypeScript支持Lambda语法,但我找不到正确的写入方法(那里有几个例子).
或者我可以采取不同的方法?