1

有谁知道如何将“显示”、“选择”和“关闭”事件绑定到 codemirror 的显示提示插件的完成对象?我想绑定这些事件的原因是我想自动定位完成列表。不知何故,当光标真正位于页面底部时,列表不在窗口中。但是当我在 codemirror 网站上查看完成演示时。它没有这个问题,它是自动定位的。请帮忙,谢谢

这是来自 codemirror 网站的文档。目前还不清楚它是如何工作的。并且没有像 jQuery doc 这样的示例或演示。

The following events will be fired on the completions object during completion:
"shown" ()
Fired when the pop-up is shown.
"select" (completion, Element)
Fired when a completion is selected. Passed the completion value (string or object) and       the DOM node that represents it in the menu.
"close" ()
Fired when the completion is finished.
This addon depends styles from addon/hint/show-hint.css. Check out the demo for an  example.
4

2 回答 2

0

好的,我已经通过阅读、比较和调试 CodeMirror Source 自己解决了这个问题。我认为这是 CodeMirror 的错误。基本上,下载版本的 show-hint.js 中有一行与演示链接文件中的不同。

您需要将代码移动到第 169 行下方和“var box”初始化上方。这样“var box”在调用getBoundingClientRect()后就可以得到正确的数字。希望他们能尽快解决这个问题。

(options.container || document.body).appendChild(hints);
于 2013-09-13T23:29:02.253 回答
0

我不确定是否理解您的答案,但我遇到了同样的问题。“pick”信号(和其他完成信号)似乎是针对“data”而不是“editor”对象发出的。

这是订阅“pick”事件的简单方法,例如:

        var completion = cm.state.completionActive;
        console.log('handling the completion object:', completion);
        var pick = completion.pick;
        completion.pick = function (data, i) {
            var completion = data.list[i];
            console.log('picked', data, completion);
            pick.apply(this, arguments);
        }
于 2014-03-02T07:30:18.957 回答