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

मौजूदा फ़ील्ड का दायरा बढ़ाने के लिए, आपको बिल्ट-इन फ़ील्ड को सब-क्लास करना होगा (उदाहरण के लिए, 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 और रजिस्ट्रेशन देखें सेक्शन में जाएं.