Ace Editor Перестроить автозаполнение при флажке - PullRequest
0 голосов
/ 06 сентября 2018

Я использую Ace Editor и хочу динамически обновлять содержимое всплывающего окна автозаполнения при установке флажка.Я использую angular и машинописный текст.

У меня есть:

 export let autoCompleter = { 
   getCompletions: function(editor, session, pos, prefix, callback) {
        this.wordList = getWordList();
        callback(
          null,
          this.wordList.map(function(word) {
            return {
              caption: word,
              value: word,
              meta: getMetaIdentifier(word)
            };
          })
        );
      }
    };

Функция getWordList () считывает логические переменные из другого класса, чтобы определить, что должно быть включено в список.Флажки на странице обновляют значения этих логических переменных.

Если я изменю значения в коде, а затем перестрою страницу, wordList обновится, как и должно.проблема в том, что мне нужно пересобрать автозаполнение и список слов динамически при нажатии на флажок.Кажется, что переменная autoCompleter создается только один раз, в начале инициализации страницы.

Мне нужно вытащить этот код в собственный метод, который я могу запускать снова и снова.что-то вроде:

  private toggleFoo(): void {
    this.foo = !this.foo;
    buildCompleter();
  }

<input type="checkbox" [checked]="foo" (change)="toggleFoo()"/>

Однако это оказывается трудным, поскольку автозаполнение создается как переменная, а не метод, который я могу запускать снова и снова.

Любая и вся помощь оценена, спасибо.

...