Ace编辑器在复选框上重建自动完成功能

时间:2018-09-06 13:17:49

标签: angular typescript autocomplete editor ace-editor

我正在使用Ace编辑器,并且希望在选中一个复选框后动态更新“自动完成”弹出窗口的内容。我正在使用角度和打字稿。

我有:

 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会按需更新。问题是我需要在单击复选框时动态地重新构建自动完成器和wordList。似乎变量autoCompleter在初始化页面开始时仅构建一次。

我需要将这段代码提取到自己的方法中,使我可以一次又一次地运行。像这样:

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

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

但是,这很困难,因为autoCompleter是作为变量而不是可以一次又一次运行的方法构建的。

感谢所有帮助,谢谢。

0 个答案:

没有答案