2014-07-21 8 views
8

अनिवार्य रूप से, मैं चाहता हूं कि उपयोगकर्ता किसी आइटम को खींचने और छोड़ने या सूची में किसी आइटम को स्थानांतरित करने के लिए ऊपर/नीचे तीरों पर क्लिक करने में सक्षम हों।मैन्युअल रूप से अपडेट करें कोणीय-यूआई यूआई-सॉर्ट करने योग्य आइटम

क्या आइटम्स इंडेक्स को अपडेट करने का कोई अच्छा तरीका है जो ui-sortable/angular-ui के साथ अच्छा खेलता है?

धन्यवाद।

अद्यतन

हम अपने नियंत्रक में एक समारोह है कि सरणी से आइटम को हटा दें और इसे फिर से जोड़ें एक सूचकांक अधिक से अधिक या अपनी मूल स्थिति की तुलना में कम में होगा जोड़कर इस का समाधान करने में सक्षम थे। यहाँ एक खराब उदाहरण है:

$scope.upDown = function(oldIndex, newIndex) { 
    var item = $scope.list[oldIndex]; 
    $scope.list.splice(oldIndex,1); 
    $scope.list.splice(newIndex,0,item); 
}; 

http://jsfiddle.net/69auq/1/

आप एक जांच जोड़ने के लिए अगर यह तदनुसार सरणी में पहला या अंतिम ELEM था निष्क्रिय करने के लिए या नीचे की आवश्यकता होगी।

+0

जिस तरह से रुक गया है, जिस पर आप कैप्चर कर सकते हैं, आपके दायरे पर आइटम उनके नए क्रम में होंगे। उन्हें एक सेवा में धक्का दें, या उनके आईडी। – Darren

+0

क्या आप अपना समाधान उत्तर के रूप में पोस्ट कर सकते हैं और इसे स्वीकार कर सकते हैं? –

उत्तर

0

हम अपने नियंत्रक में एक फ़ंक्शन जोड़कर इसे हल करने में सक्षम थे जो आइटम को सरणी से हटा देगा और इसे अपनी मूल स्थिति से अधिक या उससे कम एक सूचकांक में वापस जोड़ देगा। यहाँ एक खराब उदाहरण है:

$scope.upDown = function(oldIndex, newIndex) { 
    var item = $scope.list[oldIndex]; 
    $scope.list.splice(oldIndex,1); 
    $scope.list.splice(newIndex,0,item); 
}; 

http://jsfiddle.net/69auq/1/

आप एक जांच जोड़ने के लिए अगर यह तदनुसार सरणी में पहला या अंतिम ELEM था निष्क्रिय करने के लिए या नीचे की आवश्यकता होगी।

0

सब कुछ के साथ AngularJS, जवाब "think in Angular, not jQuery" है।

This CodePen यह अच्छा काम करता है कि यह कैसे करना है। असल में, आपके पास खींचने के लिए एक स्कॉम्ड अस्थायी वस्तु है, जिसे आप फिर ng-repeat की बाउंड सरणी में दबाते हैं। मैं इसके लिए क्रेडिट नहीं ले सकता (मेरी सृजन नहीं), लेकिन Google ने मुझे काफी जल्दी ले जाया। कोडपेन किसी बाहरी निर्भरता का उपयोग नहीं करता है, लेकिन जैसा कि आप देख सकते हैं, इसका अर्थ Angular-UI जैसे कुछ का उपयोग करने से थोड़ा अधिक काम है।

यहां a JSFiddle समान अवधारणा दिखा रहा है, लेकिन कोणीय-यूआई निर्भरता के साथ। कोणीय-ui का उपयोग करने का लाभ यह है कि अपने बाध्य डेटा सरणी केवल इस तरह के रूप में लागू किया जा करने की जरूरत है:

var myapp = angular.module('myapp', ['ui']); 

myapp.controller('controller', function ($scope) { 
    $scope.list = ["one", "two", "three", "four", "five", "six"]; 
}); 

यह अपनी ओर से भी कम काम का मतलब है, क्योंकि यह पहले से ही पता चल गया है। AngularJS jQuery के साथ अच्छी तरह से खेलने का अच्छा काम करता है, इसलिए यह आपके उपयोग के मामले के आधार पर, jQuery UI से विकास दृष्टिकोण में एक बड़ी बदलाव को निर्देशित नहीं करना चाहिए।

+0

यह मेरे प्रश्न का उत्तर नहीं देता है। मैं कोणीय-UI का उपयोग कर रहा हूं जो ड्रैग और ड्रॉप कार्यक्षमता प्रदान करता है। मुझे खींचने और छोड़ने के साथ सरणी में एक आइटम को ऊपर/नीचे 1 इंडेक्स को स्थानांतरित करने में सक्षम होना चाहिए। – juliaallyce

+0

मुझे लगता है कि मैं उलझन में हूं कि आप सूची में हेरफेर करने की कोशिश क्यों कर रहे हैं, जो पहले से स्कॉप्ड है, फ़ंक्शन का आह्वान करके कार्यक्षमता को स्कॉप्ड डेटा सरणी में हेरफेर करने की प्रकृति द्वारा शामिल किया गया है। इसके अलावा, मैंने स्पष्ट रूप से आपकी 'ui' निर्भरता को याद किया। अपने कामकाजी समाधान को वापस पोस्ट करने के लिए धन्यवाद। –

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