dojo dnd изменить тип перетаскиваемого элемента

Я использую Dojo 1.8.3

Я хочу разработать настраиваемую форму, используя dnd. У меня есть список элементов формы в левом dojo/dnd/Source и в контейнере в правом dojo/dnd/Target , который должен генерировать dijits, когда я опускаюсь Это.

<div class="normal" style="width: 99%;  height: 99%;" data-dojo-type="dijit/layout/BorderContainer" 
     data-dojo-props="design:'sidebar', gutters: true, liveSplitters: true">
   <div data-dojo-type="dijit/layout/ContentPane"  class="normal" style="width: 30%;  height: 80%;" 
                         data-dojo-props="splitter: true, region: 'left'">

     <div data-dojo-type="dojo/dnd/Source" data-dojo-id="form_tools" id="form_tools"  data-dojo-props="copyOnly: true"   
                                 class="container" style="width:99%;">
                        <div class="dojoDndItem" dndtype="heading">Heading</div>
                        <div class="dojoDndItem" dndtype="textbox">Text Box</div>
                        ... 
                </div>
        </div>
        <div data-dojo-type="dijit/layout/ContentPane" class="normal" id="form_container" 
                         style="width: 68%; height: 80%;" data-dojo-props="splitter: true, region: 'center'">

                <div data-dojo-type="dojo/dnd/Target" data-dojo-id="form_items" id="form_items" class="container" style="height: 80%;" accept="heading,textbox">
                        <script type="dojo/on" event="DndDrop"> form.transform_item(arguments[0], arguments[1], arguments[2], arguments[3]);//source, nodes, copy, target </script>                        </div>
        </div>
</div>

В моей функции JS transform_item , я делаю это:

this.transform_item = function(){ 
var dragged_items = arguments[3].selection; 

form_items.forInSelectedItems(function(item, id, map){ 
          var dnditem = dojo.byId(id); 
          switch(item.type[0]){ 
            case "textbox": 
              var textbox = new dijit.form.TextBox({ 
                  name: "textbox", 
                  value: "This is a TextBox" 
              }, "textbox_text"); 

             //HERE IS WHERE I SHOULD INSERT THE CODE FOR GENERATING A TEXTBOX 

              require(['dojo/parser'], function(parser){ 
                parser.parse('textbox_text'); 
              }); 

              break; 
 } 
 }); 
    } 

На данный момент я получаю сообщение об ошибке, когда я перехожу на цель:

dojo/parser::parse() error 
TypeError: root is null 

var node = root.firstChild; 

Как я могу заставить Dojo генерировать, например, dijit.form.TextBox , когда я перетаскиваю dndtype «textbox»?

0
nl ja de

1 ответы

Solved: I have just inserted the textbox in the wrong parent, textbox_text does not exist.So No need of parse();

0
добавлено