#jquery #angular
#jquery #angular
Вопрос:
Я использую плагин emojiarea jquery в своем проекте angular. все работает нормально, но я хочу обновить текст emojiarea до общедоступной переменной angular. как мне это сделать? Я пытался использовать zone.js но я не добился успеха.
ngAfterViewInit(): void {
$('#example').emojioneArea({
autoHideFilters: true,
saveEmojisAs: 'unicode',
events: {
keyup: function (editor, e) {
this.message = this.getText();
this.zone.run(() => this.onPlayerStateChange(e));
this.chRef.detectChanges();
console.log(this.message);
}
}
});
}
Я хочу получить значение переменной this.message внутри функции отправки.
Ответ №1:
Вы можете использовать так
ngAfterViewInit(): void {
let that = this;
$('#example').emojioneArea({
autoHideFilters: true,
saveEmojisAs: 'unicode',
events: {
keyup: function (editor, e) {
that.message = that.getText();
that.zone.run(() => that.onPlayerStateChange(e));
that.chRef.detectChanges();
console.log(that.message);
}
}
});
}
Комментарии:
1. в чем проблема?
Ответ №2:
как я понял this.getText(); возвращает текущий текст из emojioneArea, а this.message является переменной angulars, поэтому вы должны сохранить ссылку на компонент angular, чтобы он содержал эту переменную message, попробуйте написать это
let that = this;
$('#example').emojioneArea({
autoHideFilters: true,
saveEmojisAs: 'unicode',
events: {
keyup: function (editor, e) {
that.message = this.getText();
that.zone.run(() => that.onPlayerStateChange(e));
that.chRef.detectChanges();
console.log(that.message);
}
}
});