【发布时间】:2018-06-06 12:38:43
【问题描述】:
我有一个自定义元素,它在跨度中显示一些文本,如果用户决定编辑文本,我会隐藏跨度并显示文本输入。 当用户关注文本输入时,我隐藏输入并使用更新的文本再次显示跨度。 这一切都很好。
当我在页面上使用自定义元素时,我需要能够在页面上触发一个函数,以从自定义元素中获取更新的文本来更新数据库中的文本。
当用户完成文本编辑并重新显示跨度时,我不知道如何冒泡该事件,因此我可以调用页面上的函数来保存更改。 如果我使用的是按钮或其他东西,我可以设置按钮单击的委托,但由于我没有使用按钮,因此不知道如何实现。
希望这是有道理的!提前致谢!
这里是一些精简的代码。
custom-element.html:
<i if.bind="icon" class="${icon}"></i><span if.bind="!(allowEditTitle && isEditingTitle)" maxlength>${title}</span>
<input ref="titleInputEditor" type="text" value.bind="title" if.bind="allowEditTitle && isEditingTitle" maxlength="100" />
custom-element.ts
@bindable title: string;
@bindable allowEditTitle: boolean = false;
isEditingTitle: boolean = false;
toggleEditTitle() {
let me = this;
if (this.allowEditTitle === true) {
this.isEditingTitle = !this.isEditingTitle;
}
if (this.isEditingTitle == true) {
window.setTimeout(function () {
$(me.titleInputEditor).focus();
$(me.titleInputEditor).select();
$(window).one('click', function () {
if (me.isEditingTitle == true) {
me.toggleEditTitle();
}
});
$(me.titleInputEditor).one('click', function (e) {
e.stopPropagation();
});
$(me.titleInputEditor).one('focusout', function () {
me.toggleEditTitle();
});
});
}
}
app.html
<custom-element title="Default Text"
allow-edit-title.bind="true"
on-???????.call="saveTextFunction">
</custom-element>
【问题讨论】:
标签: typescript events delegates aurelia