我是dojo的新手,我正在尝试在dojo中集成orion编辑器(从http://download.eclipse.org/orion/下载的版本),但我得到错误“orion”未定义。 代码如下所示:
用于放置编辑器的HTML文件
<div data-dojo-attach-point="embeddedEditor"></div>
一个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;
}
});
}
});
});
orion编辑器构建位于editorBuild文件夹中。
独立猎户座工作正常 - http://libingw.github.io/OrionCodeEdit/ 与dojo集成时,我不确定为什么orion未定义。 任何帮助将非常感激。
答案 0 :(得分:0)
如果你想在amd模块中使用orion
名称,则必须将其定义为函数中的参数作为require的回调传递。
检查this guide - 它有两个使用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
(不会影响其他对象/模块)