2009-06-12 9 views
22

मैं एक साधारण ComboBox बनाने की कोशिश की:ExtJS कॉम्बोबॉक्स ट्रिगरएक्शन क्या करता है: "सब" वास्तव में करते हैं?

var combo1 = new Ext.form.ComboBox({ 
    store: [1,2,3], 
    renderTo: document.body 
}); 

लेकिन इस तरह से लिखा यह अजीब कार्य करता है:

  • जब आप पहली बार पॉप लटकती खोलते हैं, तो तीन विकल्प प्रदान करता है।
  • आप एक चुनें। एक आप पहले से चयनित -
  • लेकिन आप उस के बाद अपने चयन को बदलने के लिए प्रयास करते हैं, लटकती सिर्फ एक ही विकल्प प्रदान करता है।

मैं Ext मुखपृष्ठ पर samples करने के लिए अपने कोड की तुलना में और पाया कि triggerAction: "all" जोड़ने मेरी समस्या का हल:

var combo2 = new Ext.form.ComboBox({ 
    triggerAction: "all", 
    store: [1,2,3], 
    renderTo: document.body 
}); 

ExtJS triggerAction के लिए दस्तावेज़ मुझे बहुत नहीं बताता है:

ट्रिगर पर क्लिक होने पर निष्पादित करने की क्रिया। उपयोग 'सभी' क्वेरी allQuery config विकल्प ('जिज्ञासा' करने के लिए डिफ़ॉल्ट)

मैं allQuery विकल्प निर्दिष्ट नहीं किया है द्वारा निर्दिष्ट चलाने के लिए। असल में, मैं सर्वर पर एक क्वेरी नहीं करना चाहता हूं।

तो क्या इस triggerAction वास्तव में क्या करता है?

और "all" वास्तव में करने के लिए इसे स्थापित कर रही है मुझे क्या करना चाहिए जब मैं बस एक साधारण स्थिर बता गया करना चाहते हैं?

उत्तर

22

एक आइटम चुनने के बाद, सूची वर्तमान पाठ मान से मेल करने के फ़िल्टर किया जाता है। आपके मामले में, यह हमेशा चयनित मूल्य है, लेकिन बहु-वर्ण मानों के साथ अधिक स्पष्ट है (Ext में राज्य नाम उदाहरण देखें)। यदि आप चयनित मान हटाते हैं, तो ड्रॉपडाउन सभी मान रखने के लिए वापस जायेगा। triggerAction:'all' का मतलब फ़िल्टर नहीं है, हमेशा सभी मान दिखाएं।

+0

धन्यवाद। अब मैं समझ गया। –

+3

यह अब समझ में आता है, लेकिन यह वास्तव में खराब नामित विकल्प है! – duma

+0

नाम का कारण यह है कि कॉन्फ़िगर को 'ट्रिगरफ़िल्ल्ड' से विरासत में मिला है और इसलिए अधिक सामान्य रूप से combos के बाहर उपयोग किया जाता है और अन्य कार्यान्वयन में फ़िल्टरिंग से संबंधित भी नहीं है। लेकिन हां, एक कॉम्बो-विशिष्ट उपनाम जो अधिक वर्णनात्मक है वह अच्छा हो सकता है। –

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