1

我有一个 DOJO 编辑器,我使用方法 createEditor 在 JS 中添加

 require(["dijit/Editor"],
                function(Editor){
                    this.createEditor = function(idToReplace){
                        var myEditorA = new Editor({
                            height: '50px',
                            plugins:['bold','italic']
                        }, document.getElementById(idToReplace));
                        myEditorA.startup();
                    }
                });

更改后,我需要编辑器中的文本。

我连接了 getEditorText 方法,但它没有按照我的意愿去做。

 require(["dijit/Editor"],  "dojo/dom",
    function(Editor, dom){
      this.getEditorText = function(idofEditor){
      //Editor myEditor =Editor(null, dom.byId(idofEditor)); does not work either

                    var myEditor = dom.byId(idofEditor);
                    var content = myEditor.get("value");
            });

我需要的值存储在编辑器的属性“值”中。

如果我将 myEditorA 存储在全局变量中,我可以获得内容,但我需要正确的语法以避免使用不必要的全局变量

4

1 回答 1

3

在 Dojo 中,小部件 ( dijit) 和 DOM 节点是分开处理的。对于 DOM 节点,您确实需要使用dojo/dom模块和函数byId()。但是,对于小部件,您需要该dijit/registry模块,然后您可以通过其 DOM 节点获取小部件,如下所示:

require(["dijit/registry", "dojo/dom"], function(registry, dom) {
    var myEditor = registry.byNode(dom.byId(idofEditor));
});

但是因为注册中心也用与你的 DOM 节点相同的 ID 来保存你的编辑器,所以你也可以像这样直接访问它(不使用 DOM 节点):

require(["dijit/registry"], function(registry) {
    var myEditor = registry.byId(idofEditor);
});

我制作了一个示例 JSFiddle,您可以在此处找到。

于 2013-07-13T18:16:50.187 回答