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

כדי להרחיב שדה קיים, צריך לבצע מחלקה משנית של שדה מובנה (למשל 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);
  }
}

ה-constructor של מחלקה משנית של שדה נראה דומה מאוד ל-constructor של שדה בהתאמה אישית. החתימה של בנית המשנה צריכה תואמת בדרך כלל לחתימה של בנאי-העל.

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 ורישום. בקטע 'יצירת שדה מותאם אישית'.