У меня есть пользовательский элемент, который отображает некоторый текст в промежутке, и если пользователь решает редактировать текст, я скрываю промежуток и отображаю ввод текста.Когда пользователь фокусируется на вводе текста, я скрываю ввод и снова отображаю интервал с обновленным текстом.Все это прекрасно работает.
Когда я использую пользовательский элемент на странице, мне нужно иметь возможность вызвать функцию на странице, чтобы получить обновленный текст из пользовательского элемента для обновления текста в базе данных.
Когда пользователь завершает редактирование текста, и я повторно отображаю диапазон, я не знаю, как всплыть это событие, чтобы вызвать функцию на странице, чтобы сохранить изменения.Если бы я использовал кнопку или что-то еще, я мог бы назначить делегата для нажатия кнопки, но не знаю, как этого добиться, поскольку я не использую кнопку.
Надеюсь, это имеет смысл!Заранее спасибо!
Вот несколько урезанных кодов.
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>