2012-01-11 29 views
6

के लिए बिल्डिंग प्लगइन मैं एक प्लगइन बनाना चाहता हूं, जो Ext.Grid पर काम करेगा और कुछ संचालनों को अनुमति देगा (नई पंक्तियां जोड़कर, उन्हें कुछ घटनाओं पर अपडेट कर रहा है) मेरी प्लगइन का किस प्रकार का घटक होना चाहिए सर्वोत्तम परिणाम प्राप्त करने के लिए?ExtJS ग्रिड

उत्तर

15

ExtJS ग्रिड को जोड़ने कार्यक्षमता के दो तरीके प्रदान करता है:

  1. प्लगइन्स
  2. विशेषताएं

प्लगइन्स: प्लगइन्स घटक के लिए कस्टम कार्यक्षमता प्रदान । एक्सटीजेएस 4 ने इस प्रणाली को पेश किया ताकि डेवलपर्स घटक को अपनी कस्टम फीचर्स इंजेक्ट कर सकें। इसे ग्रिड क्लास के plugins विशेषता का उपयोग करके ऑब्जेक्ट या ऑब्जेक्ट की सरणी के रूप में निर्दिष्ट किया गया है।

असल में, एक प्लगइन एक एक्स्टजेएस कक्षा है जिसे आम तौर पर किसी भी एक्स्टजेस वर्ग को बढ़ाने की आवश्यकता नहीं होती है। प्लगइन क्लास का अनिवार्य हिस्सा यह है कि, इसमें init विधि होनी चाहिए जो प्लगइन सिस्टम प्लगइन को प्रारंभ करने के लिए कहता है। इस विधि को एक पैरामीटर लेना चाहिए (जो आपके ग्रिड का संदर्भ होगा)। इनिट विधि को सभी कस्टम इवेंट (यदि कोई हो) या हुक अप विधि को कॉन्फ़िगर करना है जो घटनाओं को सुनता है।

Ext.define('Ext.ux.grid.MyPlugin', { 
    alias: 'plugin.ux.muplugin', 
    init: function(grid) { 
     // init events and add listeners... 
    }, 

    customFunction: function(par1, par2) { 

     // some code... 
    }, 

}); 

विशेषताएं::

यहां नमूने के कंकाल कोड है फ़ीचर प्लगइन का एक प्रकार है जो ग्रिड पैनल के लिए ही उपलब्ध है। एक सुविधा के लिए बेस क्लास Ext.grid.feature.Feature है। यदि आप एक सुविधा बनाने की योजना बना रहे हैं तो आपको इस कक्षा को विस्तारित करने की आवश्यकता है।

Ext.define('Ext.grid.feature.MyFeature', {  
    extend: 'Ext.grid.feature.Feature', 

    alias: 'feature.myfeature', 

    // other methods.. 

}); 

यह मदद करनी चाहिए आप आरंभ:

यहां एक नमूना है।

+0

धन्यवाद देखें। मुझे यही चाहिए। –

+1

"सारस्ट्रप्लगिन क्लास बेस क्लास है, जिससे उपयोगकर्ता द्वारा लागू प्लगइन्स को उत्तराधिकारी होना चाहिए। यह वर्ग घटक द्वारा उपयोग किए जाने वाले प्लगइन के आवश्यक API को परिभाषित करता है ..." - http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.AbstractPlugin – mwoodman

+1

क्या कोई मुझे बता सकता है कि वास्तव में प्लगइन फ़ाइल कहां बनाना है और इसे ग्रिड में कैसे शामिल करना है? – Snowman

3

यदि आप src/grid/plugin/* में दिए गए प्लगइन का अध्ययन करते हैं, तो वे विशेष रूप से Ext.form.field.* की तरह किसी भी बेस क्लास का विस्तार नहीं करते हैं। तो, इमो, यह आपको जो हासिल करने की आवश्यकता है उससे संबंधित होना चाहिए।

उदाहरण के लिए, दोनों RowEditing और CellEditing उनके आधार वर्ग के रूप में Editing फैली जबकि HeaderReorder और HeaderResizer सिर्फ Ext.util.Observable फैली इतना आम घटना से निपटने को प्राप्त करने, ग्रिड की दुकान संपादित करने की क्षमता है।

सर्वश्रेष्ठ शर्त Ext.util.Observable का विस्तार करना है यदि किसी भी कार्यकाल को एक्स्ट में किसी भी कक्षा में लागू नहीं किया गया है, तो कम से कम आप अभी भी कुछ घटनाओं को आग लगा सकते हैं।

प्लगइन्स कुछ भी नहीं है लेकिन ग्रिड ऑब्जेक्ट में जोड़े गए कार्यों का सेट है। मुझे सही अगर मैं गलत हूँ;)

+1

सेन्चा के दस्तावेज़ इंगित करते हैं कि उपयोगकर्ता द्वारा लागू प्लगइन्स को ए.एस्की के उत्तर के अनुसार Ext.AbstractPlugin से प्राप्त होना चाहिए। Http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.AbstractPlugin – mwoodman

2

प्लगइन्स पुन: प्रयोज्य कार्यक्षमता हैं जो घटकों में साझा की जाती हैं। सभी EXTJS प्लगइन्स को क्लास Ext.AbstractPlugin

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