请参阅结尾处的编辑
我刚开始在项目中使用CodeMirror,但遇到了一个我根本不了解的问题。
问题将要处理CodeMirror的事件,特别是在"select"
事件上,因为我正在毫无问题地处理"change"
事件,所以我无法猜测发生了什么。
让我们看一些代码;我将CodeMirror对象包装到另一个对象中,它看起来与此类似:
function expressionEditor(config)
{
jQuery('#divEditor').append('<textarea id="expression"/>');
this.editor = CodeMirror.fromTextArea(document.getElementById('expression'),
{
mode: 'custom',
lineNumbers: true,
extraKeys: {'Ctrl-Space': 'autocomplete'}
});
this.OnChange = function(instance, object)
{
if (object.text[0] === '.')
{
CodeMirror.showHint(this.editor, CodeMirror.hint.custom);
}
};
this.OnSelectHint = function(completion, Element)
{
alert(completion + ' : ' + Element);
};
CodeMirror.on(this.editor, 'change', jQuery.proxy(this.OnChange, this));
CodeMirror.on(this.editor, 'select', jQuery.proxy(this.OnSelectHint, this));
}
正如我说的,事件"change"
可以按预期工作,当我在编辑器中写一个点时,它会调用函数this.OnChange
来调用提示列表,但是当我浏览建议的提示时this.OnSelectHint
函数永远不会被调用(导航器上没有弹出alert
。)>
根据关于CodeMirror documentation的"select"
事件,回调必须为“ 选择完成时触发。在菜单中传递完成值(字符串或对象)以及表示该值的DOM节点
由于其他事件仍在进行,我完全迷失了……关于正在发生的事情的任何线索?
如Marijn所述,CodeMirror中没有"select"
事件; "select"
事件来自show-hint
CodeMirror插件。只是为了知道:
参见最后的编辑,我刚刚开始将CodeMirror用于一个项目,并且遇到了一个我根本不了解的问题。问题是要处理CodeMirror的事件,特别是在...
[CodeMirror API中没有"select"
事件。因此,听它绝对不会做任何事情。
问题是,来自"select"
的show-hint
事件是在自动完成建议数组上触发的,而不是在CodeMirror编辑器本身上触发的。