codemirror.setOption ('mode', val) не работает - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь сделать текстовый редактор с firepad и codemirror, все отлично работает при загрузке страницы, но когда я пытаюсь изменить режим нажатием кнопки, функция вызывается, но

codemirror.setOption('mode',val);//should change mode
CodeMirror.autoLoadMode(editor, mode);//should reload codemirror

не похоже на работу. Я вызываю следующий код для события onload тела (работает отлично):

var firepadRef = getExampleRef();
codeMirror = CodeMirror(document.getElementById('firepad-container'), {
    lineNumbers: true,
    mode: 'javascript'
});
var firepad = Firepad.fromCodeMirror(firepadRef, codeMirror, {
    defaultText: '// Welcome'
});

function getExampleRef() {
  var ref = database.ref('Firepad');
  var hash = window.location.hash.replace(/#/g, '');
  if (hash) {
    ref = ref.child(hash);
  } else {
    ref = ref.push(); // generate unique location.
    window.location = window.location + '#' + ref.key;
  }
  if (typeof console !== 'undefined') {
    console.log('Firebase data: ', ref.toString());
  }
  return ref;
}

при нажатии кнопки. Я звоню по следующему коду (проблема здесь!):

console.log('Button Clicked');
CodeMirror.modeURL = "https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.40.0/mode/%N/%N.js";
var editor = CodeMirror(document.getElementById('firepad-container'), {
  lineNumbers: true
});
console.log("started changing");
var val ="xml",mode,spec;
mode=spec=val;
editor.setOption("mode", spec);//isn't changing mode!!
CodeMirror.autoLoadMode(editor, mode);//isn't reloading editor!!

Это просто миниатюрный образец кода (соответствующий).

Я использую в качестве ресурсов для перезагрузки режима и для firebase с codemirror следующее:

https://firepad.io/docs/

https://codemirror.net/demo/loadmode.html#

Вызываемые сценарии и таблицы стилей следующие (только соответствующие):

<link rel="stylesheet" href="codemirror-dark.css">
<link rel="stylesheet" href="https://cdn.firebase.com/libs/firepad/1.4.0/firepad.css">

<script src="https://www.gstatic.com/firebasejs/5.0.4/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.2.0/firebase-database.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.40.0/codemirror.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.40.0/addon/mode/loadmode.js"></script>
<script src="https://cdn.firebase.com/libs/firepad/1.4.0/firepad.min.js"></script>

Я использую Firefox, и на консоли разработчика нет никаких ошибок (он просто не меняется и не перезагружается). Так чего мне не хватает ?? Заранее спасибо.

...