【问题标题】:CodeMirror going into infinite loop when implementing on change functionCodeMirror 在实现更改功能时进入无限循环
【发布时间】:2014-11-03 13:30:00
【问题描述】:

我需要在 CodeMirror 编辑器中跟踪更改。所以我实现了:

CodeMirrorInstance.on("change", function(CodeMirrorInstance){
        $scope.onChangeFunc(CodeMirrorInstance);
    }  );

onChangeFunc 中,我使用

根据条件插入新值

CodeMirrorInstance.setValue(newCode);

显然它会导致无限循环。如何打破这个恶性循环?

【问题讨论】:

  • 您可以尝试 changeObject ,它是 change 事件中的第二个参数。它有五个属性,您可以通过这些属性中断呼叫。 codemirror.net/doc/manual.html

标签: javascript angularjs codemirror


【解决方案1】:

setValue 总是会触发另一个"change" 事件(毕竟它会改变内容)。您必须使您的更改处理程序足够聪明,以免您自己引起的更改导致额外的更改。查看传递给"change" 事件处理程序的第二个参数的origin 属性可能会起作用——它包含一个标识更改源的字符串,当调用setValue 时它将是"setValue"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-23
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多