मौजूदा फ़ील्ड का दायरा बढ़ाने के लिए, आपको बिल्ट-इन फ़ील्ड को सब-क्लास करना होगा (उदाहरण के लिए,
FieldTextInput
, FieldColour
). इसके बाद, इसके कुछ हिस्से में अपनी ज़रूरत के हिसाब से बदलाव करें.
फ़ील्ड के कुछ हिस्सों में बदलाव किए जा सकते हैं:
- यह संपादक.
- यह ऑन-ब्लॉक डिसप्ले.
- कॉन्टेंट बनाने टेक्स्ट तो वह दिखाई देता है.
अगर आपको किसी एक
कस्टम फ़ील्ड
इसके लिए, किसी बिल्ट-इन फ़ील्ड में काम करने की ज़रूरत नहीं है, तो आपको Field
सब-क्लास करना होगा.
सामान्य एक्सटेंशन
ज़्यादातर कस्टम फ़ील्ड, इन तीन में से किसी एक टाइप को बड़ा करते हैं:
- टेक्स्ट इनपुट: अगर आपको यह चाहिए कि उपयोगकर्ता आपके फ़ील्ड में टाइप करें, तो
FieldTextInput
. - संख्या: अगर आपको कोई नंबर सेव करना है, तो
FieldNumber
को बड़ा करें. - ड्रॉपडाउन: अगर आपको कोई ड्रॉपडाउन बनाना है, लेकिन किसी दूसरे मॉडल को स्टोर करना है, तो
डिफ़ॉल्ट स्ट्रिंग या इमेज मॉडल के बजाय,
FieldDropdown
को बढ़ाएं.- सावधान:
FieldDropdown
को बढ़ाने से पहले, देख लें कि ड्रॉपडाउन फ़ील्ड के कस्टमाइज़ेशन के विकल्प आपकी ज़रूरतों को पूरा नहीं कर सकते.
- सावधान:
कुछ मामलों में, हो सकता है कि आप किसी दूसरे फ़ील्ड टाइप का इस्तेमाल करना चाहें. इसके लिए
उदाहरण FieldLabelSerializable
, FieldLabel
का विस्तार करता है.
सब-क्लासिंग
import * as Blockly from 'blockly';
export class MyCustomTextField extends Blockly.FieldTextInput {
constructor(value, validator, config) {
super(value, validator, config);
}
}
किसी फ़ील्ड की सब-क्लास का कंस्ट्रक्टर, काफ़ी हद तक कस्टम फ़ील्ड. सब-कंस्ट्रक्टर के हस्ताक्षर यह होने चाहिए सामान्य रूप से सुपर-कंस्ट्रक्टर के हस्ताक्षर से मेल खाते हैं.
JSON और रजिस्ट्रेशन
आपको फ़ील्ड को एक बार भी रजिस्टर करना चाहिए:
Blockly.fieldRegistry.register('my_custom_text_field', MyCustomTextField);
साथ ही, क्लास में fromJson
को लागू करने की सुविधा दें, ताकि यह
JSON प्रारूप:
static fromJson(options) {
const value = Blockly.utils.parsing.replaceMessageReferences(options.value);
return new MySubclassName(value);
}
किसी फ़ील्ड को रजिस्टर करने के बारे में ज़्यादा जानने के लिए, JSON और रजिस्ट्रेशन देखें सेक्शन में जाएं.