2014-03-12 57 views
1

我只需要拖动&只有当树节点是在EXTJS叶。 这是我的代码:如何限制拖放只有树节点是叶子EXTJS

拖动源

var tree = Ext.create('Ext.tree.Panel', { 
    title: 'Simple Tree', 
    width: 400, 
    height: 600, 
    store: store, 
    rootVisible: false,    
    viewConfig: { 
     plugins: { 
      ptype: 'treeviewdragdrop', 
      copy: true, 
      dragGroup: 'myDDGroup' 
     } 
    }, 
}); 

放置目标

Ext.define('myPanelDropTarget', { 
    extend: 'Ext.dd.DropTarget', 

    notifyEnter : function(source, e, data) { 
     console.log('enter'); 
     return this.callParent(arguments); 
    },     
    notifyOut : function(source, e, data) { 
     console.log('out'); 
     return this.callParent(arguments); 
    }, 

    notifyOver : function(source, e, data) { 
     console.log('over'); 
     return this.callParent(arguments); 
    },     
    notifyDrop : function(source, e, data) { 
     var me = this; 
     console.log('drop'); 

     var text = data.records[0].get('text'); 

     var d3ComponentEl = me.panel.down('#d3Component').getEl(); 

     d3ComponentEl.insertHtml('beforeEnd', text + '<br />');     

     return true; 
    }       
}); 

面板与降targetstrong文本

var panel = Ext.create('Ext.panel.Panel', { 
    title: 'Drop Target Panel', 
    border: true, 
    width: 400, 
    height: 600, 
    items: [ 
     { 
      xtype: 'component', 
      id: 'd3Component', 
      autoEl: { tag: 'div' } 
     } 
    ], 
    listeners: { 
     'afterrender': function() { 
      panel.dropZone = Ext.create('myPanelDropTarget', panel.getEl(), { 
       ddGroup: 'myDDGroup', 
       panel: panel 
      });      
     } 
    }    
}); 
配置

这工作正常,但会发生什么,我也可以从树中拖放文件夹,并会限制只有叶困难。

例子:

拨弄完整的活生生的例子:在这里https://fiddle.sencha.com/#fiddle/340

看,如果该节点是不是叶子,我需要的是如果不取消叶落事件。有什么想法?

Ext.define('myPanelDropTarget', { 
    extend: 'Ext.dd.DropTarget',  

    nodedragover: function(targetNode, position, dragData){  
      var me = this;  
         var rec = dragData.records[0].raw.canDrop; 
         var camara = me.panel.down('#'+id); 
         console.log(camara.getEl()); 
         if(!rec) 
         { 
       ***//I need to cancel the drop event*** 

         } 

        }, 
    notifyDrop : function(source, e, data) { 


     this.nodedragover(source, e, data); 

     var me = this; 

     var cam = data.records[0].raw; 

     var target = cam.protocol+'://'+cam.user+':'+cam.pass+'@'+cam.ip+':'+cam.port+'/'+cam.ruta; 


     var camara = me.panel.down('#'+id); 
     camara.setTitle(cam.text); 

     var data = '<embed type="application/x-vlc-plugin" id="vlc1" name="vlc1" toolbar="false" allowfullscreen="false" width=100%; height=100%; target= "'+target+'"; />';  

     camara.body.setHTML(data); 


     return true; 
    }    


}); 
+0

能否请您提供更多的澄清答案吗?可能是代码片段或[小提琴](https://fiddle.sencha.com),表明您遇到的问题? – weeksdev

+1

在文档中有一个示例:http://docs.sencha.com/extjs/4.2.2/#!/example/tree/custom-drop-logic.html –

+0

我正在评审示例作品,但不是我,我设法找出节点是否是叶子,但当叶子节点是我们时,我不能取消掉落事件。这是代码。 – eliecerSR

回答

相关问题