使用 angular ui ace 时如何获取范围?

How to get Range when using angular ui ace?

有谁知道我如何使用 angular ui ace 获得射程? 如果我直接在我的 html 中嵌入 ace,我可能会这样做:

var editor = ace.edit("editor");
editor.setTheme("ace/theme/monokai");
editor.getSession().setMode("ace/mode/javascript");

    var Range = ace.require('ace/range').Range;

但是我怎样才能用 angular ui ace 得到这个?我可以访问模型和编辑器 class,但我想这将需要 uire ace 对象?

Ace documentation

angular ui ace

谢谢。

ace 全局变量也可用于 angular ui ace。 在 ui-ace 演示页面 http://angular-ui.github.io/ui-ace/

的控制台中尝试 ace.require('ace/range').Range;

我刚找到解决方案。我不喜欢它,但它确实有效!

要创建新的 Range 对象,您需要获取其构造函数。因为编辑器的 selectionRange 属性 是相同的 "object type"(我知道,我们在 JavaScript),你可以得到它的构造函数并用它创建新的 Range 对象:)

您可以在onLoad函数中获取编辑器对象:

this.aceLoaded = function (editor) {
    let AceRange = editor.getSelectionRange().constructor;
    editor.session.addMarker(new AceRange(from,0, to, 200), "your-style", "fullLine");
}

并且在 html 模板中,您将它与

绑定
  <div ui-ace="{
          onLoad: $ctrl.aceLoaded,
        }">