我正在使用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是作为变量而不是可以一次又一次运行的方法构建的。
感谢所有帮助,谢谢。