שדות של תיבות סימון

בשדה של תיבת סימון נשמרים מחרוזת בתור הערך שלה, ומחרוזת משמשת כטקסט. שלו הערך הוא 'TRUE' או 'FALSE', והטקסט שלו הוא 'true' או 'false'

שדה תיבת סימון

שדה תיבת סימון בבלוק מכווץ

יצירה

JSON

{
  "type": "example_checkbox",
  "message0": "checkbox: %1",
  "args0": [
    {
      "type": "field_checkbox",
      "name": "FIELDNAME",
      "checked": true
    }
  ]
}

JavaScript

Blockly.Blocks['example_checkbox'] = {
  init: function() {
    this.appendDummyInput()
        .appendField('checkbox:')
        .appendField(new Blockly.FieldCheckbox(true), 'FIELDNAME');
  }
};

constructor של תיבות הסימון מקבל ערך אופציונלי ופרמטר אופציונלי כלי התיקוף. הערך האופציונלי צריך להיות אחד 'TRUE', 'FALSE' או ערך בוליאני, אחרת ברירת המחדל שלו תהיה false.

סריאליזציה

JSON

ה-JSON של שדה תיבת סימון נראה כך:

{
  "fields": {
    "FIELDNAME": true
  }
}

כאשר FIELDNAME הוא מחרוזת שמפנה לשדה תיבת סימון, הערך הוא הערך שיש להחיל על השדה. הערך חייב להיות בוליאני.

XML

ה-XML של שדה תיבת סימון נראה כך:

<field name="FIELDNAME">TRUE</field>

או

<field name="FIELDNAME">true</field>

כשהמאפיין name מכיל מחרוזת שמפנה לשדה תיבת סימון, והטקסט הפנימי הוא הערך שצריך להחיל על השדה. ערך הטקסט הפנימי תואם לאותם כללים כמו ערך ה-constructor.

חשוב לשים לב: אחרי שמבצעים deserialize וreserial מחדש את כל הטקסט הפנימי, הערכים יופיעו באותיות גדולות ('TRUE' או 'FALSE'). לפעמים זה חשוב בהבדלים בין סביבות עבודה.

התאמה אישית

תו סימן וי

אפשר להשתמש במאפיין Blockly.FieldCheckbox.CHECK_CHAR כדי לשנות את התוכן נראה כמו סימן וי. הערך צריך להיות מחרוזת שמכילה Unicode .

שדה תיבת סימון עם לב במקום סימן

ערך ברירת המחדל של המאפיין CHECK_CHAR הוא ' \u2713' או ✓.

זהו נכס גלובלי, ולכן הוא ישנה את כל השדות של תיבות הסימון כשהם יוגדרו.

יצירת כלי לאימות תיבות סימון

הערך בשדה תיבת סימון הוא 'TRUE' או 'FALSE', ולכן מאמת צריך מקבלים את הערכים האלה (כלומר מחרוזת) ומחזירים את הערך 'TRUE', 'FALSE', null או undefined

לפניכם דוגמה לכלי תיקוף שמסתיר או מציג שדה להזנת טקסט על סמך האם תיבת הסימון מסומנת:

  validate: function(newValue) {
    var sourceBlock = this.getSourceBlock();
    sourceBlock.showTextField_ = newValue == 'TRUE';
    sourceBlock.updateTextField();

    return newValue;
  },

  updateTextField: function() {
    var input = this.getInput('DUMMY');
    if (this.showTextField_ && !this.getField('TEXT')) {
      input.appendField(new Blockly.FieldTextInput(), 'TEXT');
    } else if (!this.showTextField_ && this.getField('TEXT')) {
      input.removeField('TEXT');
    }
  }

שדה תיבת סימון עם כלי תיקוף