2014-11-23 8 views
11

मैं वर्तमान में angular-ui-tree लाइब्रेरी का उपयोग कर रहा हूँ और मैं निम्नलिखित व्यवहार प्राप्त करने के लिए कोशिश कर रहा हूँ:कोणीय जे एस (कोणीय-ui-वृक्ष) संघर्ष बनाम खींचें शुरू घटना एनजी-क्लिक करें

उपयोगकर्ता सिर्फ 'खींचने योग्य नोड' पर क्लिक करते हैं यह चलाता है ng-click फ़ंक्शन, यदि उपयोगकर्ता क्लिक करें और ng-click खींचना प्रारंभ करें अनदेखा किया जाता है और नियमित ड्रैग-एन-ड्रॉप प्रारंभ होता है।

मैं निम्नलिखित है एचटीएमएल संरचना:

<div ui-tree="rootTree" ng-controller="Controller"> 
    <div ui-tree-nodes="" ng-model="nodes"> 
     <div ng-repeat="node in nodes" ui-tree-node="" ng-click="selectNode(node)" > 
      <div ui-tree-handle=""> 
      ... 
      </div> 
     </div> 
    </div> 
</div> 

वर्तमान व्यवहार है कि खींचें-एन-बूंद 'mousedown' पर तुरंत शुरू होता है और वहाँ के प्रयास से अलग करने के 'क्लिक' खींच शुरू करने के लिए कोई रास्ता नहीं है

यहाँ जो uiTreeNode.js

var bindDrag = function() { 
    element.bind('touchstart mousedown', function (e) { 
    if (!scope.$treeScope.multiSelect) { 
     dragDelaying = true; 
     dragStarted = false; 
     dragTimer = $timeout(function() { 
     dragStartEvent(e); 
     dragDelaying = false; 
     }, scope.$treeScope.dragDelay); 
    } else { 
     toggleSelect(e); 
    } 
    }); 
    element.bind('touchend touchcancel mouseup', function() { 
     $timeout.cancel(dragTimer); 
    }); 
}; 

उत्तर

9

मैं सिर्फ एक ही issu था ​​नोड के खींचें-एन-बूंद से चलाता पुस्तकालय कोड है ई और मैं इसे 100 करने के लिए डेटा-ड्रैग देरी वृद्धि से हल, का प्रयास करें:

ui-tree="rootTree" ng-controller="Controller" data-drag-delay="100"

1

यह काफी पुराना सवाल है, लेकिन आप dropped() कॉलबैक रजिस्टर और निष्पादित कर सकते हैं अगर आप देरी नहीं करना चाहते हैं कि आपके अगर सूचकांक नहीं बदला गया तो कार्रवाई पर क्लिक करें। उदाहरण के लिए:

dropped: function(event){ 
    //if element was not moved, use click event 
    if(event.source.index == event.dest.index){ 
     $scope.someAction(); 
    } 
} 
+0

इस कोड को कहां लिखना है – Coder

संबंधित मुद्दे