Как обновить привязку данных в коде jquery с помощью angular?

#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);
        }
      }
    });