הרחבת שדה קיים

כדי להרחיב שדה קיים צריך לבצע חלוקת משנה של שדה מובנה (למשל 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 ורישום במאמר 'יצירת שדה מותאם אישית'.