मौजूदा फ़ील्ड को बढ़ाना

किसी मौजूदा फ़ील्ड को बढ़ाने के लिए, आपको बिल्ट-इन फ़ील्ड (जैसे, FieldTextInput, FieldColour) को सब-क्लास करना होगा और फिर अपनी ज़रूरत के हिसाब से इसके एक हिस्से में बदलाव करना होगा. फ़ील्ड के कुछ हिस्सों में बदलाव किए जा सकते हैं:

अगर आपको कोई ऐसा कस्टम फ़ील्ड बनाना है जिसे पहले से मौजूद किसी फ़ील्ड से काम करने की ज़रूरत नहीं है, तो आपको Field को सब-क्लास करना होगा.

सामान्य एक्सटेंशन

ज़्यादातर कस्टम फ़ील्ड, इन तीन में से किसी एक टाइप को बढ़ाते हैं:

  • टेक्स्ट इनपुट: अगर आप चाहते हैं कि उपयोगकर्ता आपके फ़ील्ड में टाइप करें, तो आपको FieldTextInput को बढ़ाना चाहिए.
  • संख्या: अगर आपको कोई नंबर सेव करना है, तो FieldNumber की अवधि बढ़ाएं.
  • ड्रॉपडाउन: अगर आपको कोई ड्रॉपडाउन बनाना है, लेकिन आपको इसे डिफ़ॉल्ट स्ट्रिंग या इमेज मॉडल से अलग मॉडल स्टोर करना है, तो आपको 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 और रजिस्ट्रेशन सेक्शन देखें.