בשדה של תיבת סימון נשמרים מחרוזת בתור הערך שלה, ומחרוזת משמשת כטקסט. שלו
הערך הוא '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');
}
}