सवाल डेटाटेबल () बनाम डेटाटेबल () - इसमें कोई अंतर क्यों है और मैं उन्हें एक साथ कैसे काम करूं?


इस प्लगइन के लिए दस्तावेज़ों का विशाल बहुमत इंगित करता है कि आप इसे प्रारंभ करते हैं

$('#example').dataTable();

तथापि http://www.datatables.net/examples/api/multi_filter_select.html उपयोग शुरू करता है

$('#example').DataTable();

परिणामी वस्तुएं काफी भिन्न होती हैं, और उपरोक्त उदाहरण यूआरएल काम नहीं करता है जब मैं लोअर-केस 'डी' के साथ शुरू करता हूं, हालांकि बाकी सबकुछ की आवश्यकता है निचला मामला 'डी' प्रारंभिकरण।

क्या कोई मुझे बता सकता है कि इसमें कोई अंतर क्यों है, और दोनों नाटकों को एक साथ कैसे अच्छा बनाना है? अनिवार्य रूप से मुझे बहु-फ़िल्टर-चयन कार्यक्षमता की आवश्यकता है, लेकिन कुछ अन्य कॉल / प्लगइन्स पर भी निपटने की आवश्यकता है, जो ऊपरी-मामले 'डी' प्रारंभिकरण की तरह प्रतीत नहीं होता है।


44
2017-08-08 15:37


मूल


मेरी समझ यह थी कि नया संस्करण नया (1.10) डेटाटेबल का उपयोग करता है और पुराने संस्करण डेटाटेबल का उपयोग करते हैं। http://www.datatables.net/new/1.10, और ऐसा लगता है कि आप किसी विशेष संस्करण की सुविधाओं तक पहुंचने के लिए 2 प्रारंभिक प्रकारों का एक साथ उपयोग कर सकते हैं। - markpsmith
मैंने पहले यही सोचा था, लेकिन साइट पर अधिकांश उदाहरण निम्न-मामले 'डी' का उपयोग करते हैं, और 1.10.2 - datatables.net/examples/basic_init/zero_configuration.html - ggutenberg
कॉल करने की कोशिश करते समय मैंने वही चीज़ अनुभव की var table = $("#datatables-example").dataTable(); फिर var info = table.page.info()। यह काम नहीं किया, क्योंकि .page.info() जब हम कॉल करते हैं तो केवल तभी काम करता है .Datatable()। जैसा कि @ डेविडकोनाड ने उत्तर दिया, जब मैं कॉल करता हूं तो यह लोअरकेस 'डेटाटेबल्स' के साथ काम करता है var info = table.api().page.info() - danisupr4


जवाब:


असल में, दो रचनाकार विभिन्न वस्तुओं को वापस करते हैं।


डेटाटेबल कन्स्ट्रक्टर

var table = $(<selector>).dataTable()

dataTable पुरानास्कूल डेटाटेबल कंस्ट्रक्टर है, जो एक jQuery ऑब्जेक्ट देता है। यह jQuery ऑब्जेक्ट हंगेरी नोटेशन प्रारूप में एपीआई विधियों के एक सेट के साथ समृद्ध है, जैसे कि fnFilter, fnDeleteRow और इसी तरह। एपीआई विधियों की एक पूरी सूची देखें यहाँ। उदाहरण :

table.fnDeleteRow(0); 
table.fnAddData(['E', 'F']);

dataTable सभी द्वारा समर्थित है 1.9.x / 1.10.x संस्करणों।


डेटाटेबल कन्स्ट्रक्टर

var table = $(<selector>).DataTable()

डेटाटेबल कन्स्ट्रक्टर में पेश किया गया था 1.10.x, और पृष्ठों, पंक्तियों, कोशिकाओं और अधिक के लिए पूर्ण पढ़ने / लिखने के उपयोग के साथ एक विशाल एपीआई ऑब्जेक्ट देता है, देखें गाइड। उदाहरण समकक्ष:

table.row(0).remove();
table.row.add(['E', 'F']).draw();

डेटाटेबल और डेटाटेबल का संयोजन

यदि आप पुराने कोड को बनाए रखते हैं, या किसी कारण से पुरानेस्कूल डेटाटेबल कन्स्ट्रक्टर का उपयोग करने की आवश्यकता है, लेकिन फिर भी नई एपीआई का उपयोग करने की आवश्यकता है, तो jQuery ऑब्जेक्ट बढ़ाया गया है 1.10.0) के साथ .api() विधि जो नई एपीआई देता है। उदाहरण समकक्ष:

var table = $('#example').dataTable();
table.api().row(0).remove();
table.api().row.add(['E', 'F']).draw();

पुरानी एपीआई की तरह table.fnDeleteRow(0) अभी भी काम करता है। तो आपकी चिंता के लिए:

अनिवार्य रूप से मुझे बहु-फ़िल्टर-चयन कार्यक्षमता की आवश्यकता है, लेकिन यह भी   कुछ अन्य कॉल / प्लगइन्स पर काम करने की आवश्यकता है, जो ऐसा प्रतीत नहीं होता है   ऊपरी मामले 'डी' प्रारंभिकरण।

जैसा कि आप देखते हैं, आप दोनों कर सकते हैं! डेटा को पुराने तरीके से शुरू करें, और उपयोग करें .api() जब आपको नए एपीआई तक पहुंच की आवश्यकता होती है।


DataTable () का उपयोग कर इतने सारे आधिकारिक उदाहरण क्यों हैं?

ठीक है, आप नहीं करते जरुरत का उपयोग करने के लिए DataTable निर्माता। यदि आप नए एपीआई का उपयोग नहीं करते हैं, तो इसका उपयोग करने का कोई कारण नहीं है DataTable constructur। पुराना स्कूल dataTable कन्स्ट्रक्टर को बहिष्कृत नहीं किया गया है। डेटाटेबल्स ज्यादातर एक मानव काम है। फोरम, मैनुअल, उदाहरणों के टन और इतने पर एक बड़ी वेबसाइट बनाए रखने के लिए यह बनाए रखने और विकसित करने और स्पष्ट रूप से बहुत समय लेने के लिए एक बड़ा काम है। यह केवल एक अनुमान है, लेकिन मुझे लगता है कि अब तक एलन जार्डिन बदल गए हैं dataTable सेवा मेरे DataTable जहां वास्तव में इसकी आवश्यकता होती है, बस क्योंकि वह इसे एक ही चरण में नहीं कर सकता है।


71
2017-08-09 07:53



क्या वे दोनों एक jQuery वस्तु वापस करते हैं? - Triynko
@Triynko, जैसा ऊपर बताया गया है, नहीं! देखना एक संक्षिप्त विवरण अंतर के लिए। या, नियम के अंगूठे के रूप में - यदि आप विशिष्ट jQuery विधियों जैसे एक्स पर काम कर सकते हैं find() या attr() तो आपके पास एक jQuery ऑब्जेक्ट है। DataTable() एक जावास्क्रिप्ट ऑब्जेक्ट शाब्दिक लौटाएं जो एक jQuery ऑब्जेक्ट नहीं है, लेकिन यह अभी भी एक jQuery ऑब्जेक्ट में जो काम कर रहा है उसे परिवर्तित करने के तरीकों की पेशकश करता है to$() अगर आप किसी कारण से सोचते हैं कि यह अधिक आसान है। - davidkonrad