2014-09-02 7 views
7

मैं अंगुलरजेएस के लिए नया हूं और वर्तमान परियोजना पर मेरा थोड़ा दबाव है इसलिए मैं यहां पूछ रहा हूं।एंगुलरजेएस एनजी-ड्रैग

मुझे लगता है कि AngularJS में ng-dragstart ईवेंट (http://docs.ng.dart.ant.c-k.me/angular.directive/NgEventDirective.html) है लेकिन यह काम नहीं कर रहा है। अन्य पृष्ठों पर मैं देख सकता हूं कि अन्य डेवलपर्स नए 'निर्देश' करने की सलाह देते हैं।

तो मेरा सवाल यह है: "क्या एंगुलरजेएस के भीतर लागू एक देशी एनजी-ड्रैग functinallity है या मैं खुद को कार्यान्वित करना चाहिए?"

+1

आपके द्वारा पोस्ट किया गया लिंक डार्ट के लिए है, angular.js नहीं। Angular.js मूल ड्रैग निर्देश नहीं है। –

+0

ठीक है, यही वह जवाब है जिसे मैं –

उत्तर

7

तो आप पहले से किए गए एक का उपयोग नहीं करना चाहते हैं तो आप यह अपने आप को लागू करने की आवश्यकता होगी। मैंने खुद को कुछ एक साथ फेंक दिया।

मुझे एक कोणीय संदर्भ में ड्रैग घटनाओं का उपयोग करने का एक आसान तरीका था। मैं वही कार्यक्षमता चाहता था जो अन्य एनजी-इवेंट्स के साथ ही ड्रैग इवेंट्स के साथ भी हो। मैंने स्रोत here पर देखा और अधिकांश भाग के लिए स्रोत कैसे एनजी-घटना निर्देश बनाता है।

एक निर्भरता के रूप में ngDrag शामिल करें। आप सभी ng-drag* घटनाओं का उपयोग कर सकते हैं।

(function(){ 
    var ngDragEventDirectives = {}; 

    angular.forEach(
     'drag dragend dragenter dragexit dragleave dragover dragstart drop'.split(' '), 
     function(eventName) { 
      var directiveName = 'ng' + eventName.charAt(0).toUpperCase() + eventName.slice(1); 

      ngDragEventDirectives[directiveName] = ['$parse', '$rootScope', function($parse, $rootScope) { 
       return { 
        restrict: 'A', 
        compile: function($element, attr) { 
         var fn = $parse(attr[directiveName], null, true); 

         return function ngDragEventHandler(scope, element) { 
          element.on(eventName, function(event) { 
           var callback = function() { 
            fn(scope, {$event: event}); 
           }; 

           scope.$apply(callback); 
          }); 
         }; 
        } 
       }; 
      }]; 
     } 
    ); 

    angular 
     .module('ngDrag', []) 
     .directive(ngDragEventDirectives); 
}()); 
+1

उन 'शून्य' और 'सत्य' तर्कों का अर्थ 'पार्स' से क्या है? मैं कोणीय दस्तावेज़ों में एकमात्र तर्क 'अभिव्यक्ति' देखता हूं: https://docs.angularjs.org/api/ng/service/$parse – ars

+0

@ars दिलचस्प प्रश्न। मैंने बस स्रोत से कॉपी किया है, लेकिन ऐसा लगता है कि वे कुछ करते हैं: http://stackoverflow.com/questions/31053051/parse-interceptorfn-expensivechecks-arguments – jeremy

2

आप AngularJS के लिए कोणीय ड्रैग और ड्रॉप का उपयोग codef0rmer द्वारा कर सकते हैं। इसे लागू करने के लिए काफी आसान है और, खींचें में उठाया और खींचें सुविधा के लिए छोड़

आपके मामले में घटनाओं के लिए दोनों कोणीय और jQuery कॉलबैक, आप के रूप में

<div class="btn btn-primary" data-drag="true" data-jqyoui-options="{revert: 'invalid'}" ng-model="list1" jqyoui-draggable="{animate:true}" ng-hide="!list1.title">{{list1.title}}</div> 

मैं व्यक्तिगत रूप से इसका इस्तेमाल किया और पाया यह लिख सकते हैं का समर्थन करता है यह बहुत आसान है।

अधिक जानकारी Here

+1

देख रहा हूं हां लेकिन मेरे प्रश्न का सख्त जवाब यह है कि "कोई देशी एंगुलरजेएस निर्देश नहीं है जो ड्रैग 'एन ड्रॉप फंक्शनलाइट को संभालता है और मुझे इसके अलावा कुछ भी उपयोग करना है" - है कि सही? –

+1

हां। और यदि आप व्यापक कुशलता के लिए तैयार हैं, तो आपको वास्तव में एक कस्टम निर्देश का उपयोग करना चाहिए। –

+0

AngularJS ड्रैगगेबल के लिए कोई मूल निर्देश प्रदान नहीं करता है। हालांकि, दस्तावेज़ीकरण एक साधारण उदाहरण देता है कि एक साधारण ड्रैगगेबल ऑब्जेक्ट कैसे बनाया जाए जो मुझे बहुत उपयोगी और एक अच्छा प्रारंभिक बिंदु [एक निर्देश बनाएं जो उपयोगकर्ता को तत्व खींचने देता है] (https://docs.angularjs.org/guide/निर्देश # बनाना-a-directive-that-add-event-listeners) – Shahar