"orion" не определен при интеграции редактора orion в dojo - PullRequest
0 голосов
/ 17 мая 2018

Я новичок в dojo и пытаюсь интегрировать редактор orion (сборка загружена из http://download.eclipse.org/orion/) в dojo, но я получаю сообщение об ошибке "orion" не определено. Код выглядит следующим образом:

  1. HTML-файл для размещения редактора <div data-dojo-attach-point="embeddedEditor"></div>

  2. Файл JS

    require([
    "dojo/_base/declare", 
    "dijit/_WidgetBase",
    "editorBuild/code_edit/built-codeEdit-amd",
    "dijit/_TemplatedMixin",
    "dojo/text!orionEditor.html"
    ], function(declare,_WidgetBase,
    codeEditorAmd, _TemplatedMixin,template){
    declare("orionEditor", [_WidgetBase, 
    _TemplatedMixin], {
    
    templateString: template,
    
    postCreate: function(){
          var codeEdit = new orion.codeEdit();
            var contents = '';
                codeEdit.create({parent: this.embeddedEditor, contentType: "application/javascript", contents: contents}).
          then(function(editorViewer) {                         
            if (editorViewer.settings) {
                            editorViewer.settings.contentAssistAutoTrigger = true;
                            editorViewer.settings.showOccurrences = true;
                        }
    
                    });
         }
       });
      });
    
  3. Сборка редактора orion находится в папке editorBuild.

Автономный орион отлично работает - http://libingw.github.io/OrionCodeEdit/ При интеграции с dojo я не уверен, почему orion не определен. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 17 мая 2018

Если вы хотите использовать orion имя в модуле amd, тогда оно должно быть определено как параметр в функции, передаваемой как обратный вызов require.

Проверьте это руководство - у него есть 2 решения дляиспользование orion с модулями amd.

Вариант 1 - определите комплекты один раз и используйте более короткое имя во всех нужных им модулях:

require.config({
    bundles: {
        "editorBuild/code_edit/built-codeEdit-amd": ["orion/codeEdit", "orion/Deferred"]
    }       
});
require(
    ["orion/codeEdit", "orion/Deferred"], 
    function(mCodeEdit, Deferred) {
        var codeEdit = new mCodeEdit();
        var contents = 'var foo = "bar";'; 
        codeEdit.create({parent: "embeddedEditor"/*editor parent node id*/})
                .then(function(editorViewer) {
                    editorViewer.setContents(contents, "application/javascript");
                });
});

Вариант 2 - вложенное требование:

require(["editorBuild/code_edit/built-codeEdit-amd"], function() {
    require(["orion/codeEdit", "orion/Deferred"], function(mCodeEdit, Deferred) {
    var codeEdit = new mCodeEdit();
    var contents = 'var foo = "bar";'; 
    codeEdit.create({parent: "embeddedEditor"/*editor parent node id*/})
            .then(function(editorViewer) {
                editorViewer.setContents(contents, "application/javascript");
            });
    });
});

Примечание: вы можете заменить mCodeEdit на любое уникальное имя (которое не будет затенять другие объекты / модули)

...