मैं jQuery UI sortable और Meteor Collection Hooks और contentEditable का उपयोग करके ड्रैग और ड्रॉप, क्रमबद्ध और संपादन योग्य सूची को लागू करने में कामयाब रहा। आंशिक रूप से काम करने वाले उदाहरण के लिए, this demo देखें।
मेरे कार्यान्वयन इस प्रकार है (दुर्भाग्य से उस में एक साधारण प्लग हो जाएगा नहीं और उदाहरण जाना,
लेकिन मैं एक डेमो ऊपर है और जल्द ही इस विशिष्ट उदाहरण के लिए चलाने के लिए
आशा):
ग्राहक जे एस खींचें के लिए, ड्रॉप और बचाने:
Template.templateName.rendered = ->
Deps.autorun ->
$('#list').sortable
handle: '.handle'
stop: (event, ui) ->
_.each $(event.target).children('div'), (element, index, list) ->
Elements.update { _id: element.getAttribute('data-element-id') },
$set: position: index + 1
कुछ बातें यहाँ सूचना के लिए, मैं एक 'हैंडल' का उपयोग कर रहा तत्व के चारों ओर खींचें करने के लिए, अंदर के रूप में प्रत्येक div अन्य बटन और संपादन योग्य सामग्री देखते हैं। एक बार उपयोगकर्ता ने एक तत्व खींच लिया है और उसे जगह में गिरा दिया है, तो 'स्टॉप' ईवेंट बंद हो जाता है और मैं नई स्थिति के साथ उस सूची में प्रत्येक तत्व अपडेट करता हूं।
मेरे पास पृष्ठ पर तत्व जोड़ने की क्षमता भी है, जो सूची के नीचे स्थित होगी। अन्यथा आप शायद Meteor Collection Behaviours और/या Mongo Counter पैकेज का उपयोग कर दूर हो सकते हैं। हुक
@Elements.before.insert (userId, doc) ->
highestElement = Elements.findOne({},
sort: { position: -1 }
limit: 1
)
position = if highestElement? then highestElement.position else 0
doc.position = position + 1
यहाँ हम केवल उच्चतम दस्तावेज़ हो रही है इससे पहले कि
संग्रह, स्थिति विशेषता पर छँटाई: हालांकि, मैं Meteor Collection Hooks#.before.insert इस प्रकार का उपयोग किया। यदि यह अस्तित्व में नहीं है (उदाहरण के लिए पहला तत्व बनाया जाना है) तो हम पदों को शुरू करने के लिए 1.
पीएस: यदि आप कॉफीस्क्रिप्ट को नहीं समझते हैं, तो इस incredible tool (Js2coffee) पर कोड कॉपी करें।
संपादित करें: demo (उल्का के सर्वर पर बहुत धीमी गति से) और source code
मुझे लगता है कि आप इसे आसानी से कार्यान्वित कर सकते हैं। आप सामान्य उल्का टेम्पलेट्स के माध्यम से अपना सूची-डेटा तैयार करेंगे, और फिर '$() को लागू करने के लिए 'Template.name.rendered()' कॉलबैक का उपयोग करें। Sortable() '। फिर आप ईवेंट हैंडलर को उसी स्थान पर सेट कर सकते हैं, जो कॉल करते समय संग्रह को अपडेट कर सकता है। – bento
यदि लोग सभी उत्तरों को नहीं पढ़ते हैं, तो 0.9.0 क्रमबद्ध सूची के साथ .sortable कार्यों के साथ ठीक है। उनके पास उनके रेपो पर एक उदाहरण है https://github.com/meteor/meteor/blob/devel/examples/unfinished/reorderable-list – daxiangCODE