In einem Kästchen werden ein String als Wert und ein String als Text gespeichert. Der Wert ist entweder 'TRUE'
oder 'FALSE'
und der Text entweder 'true'
oder 'false'
.
Kästchen-Feld
Kästchen in minimiertem Block
Erstellung
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');
}
};
Der Kästchenkonstruktor übernimmt einen optionalen Wert und einen optionalen validator. Der optionale Wert sollte entweder 'TRUE'
, 'FALSE'
oder ein boolescher Wert sein. Andernfalls wird standardmäßig false
verwendet.
Serialisierung
JSON
Der JSON-Code für ein Kästchenfeld sieht so aus:
{
"fields": {
"FIELDNAME": true
}
}
Dabei ist FIELDNAME
ein String, der auf ein Kästchenfeld verweist, und der Wert ist der Wert, der auf das Feld angewendet werden soll. Der Wert muss ein boolescher Wert sein.
XML
Der XML-Code für ein Kästchenfeld sieht so aus:
<field name="FIELDNAME">TRUE</field>
oder
<field name="FIELDNAME">true</field>
Dabei enthält das Attribut name
einen String, der auf ein Kästchenfeld verweist, und der innere Text ist der Wert, der auf das Feld angewendet werden soll. Der innere Textwert folgt denselben Regeln wie der Konstruktorwert.
Beachten Sie, dass nach der Deserialisierung und Reserialisierung alle inneren Textwerte in Großbuchstaben angezeigt werden ('TRUE'
oder 'FALSE'
). Dies ist manchmal beim Vergleichen von Arbeitsbereichen wichtig.
Anpassbare
Häkchen
Mit dem Attribut Blockly.FieldCheckbox.CHECK_CHAR
kann die Darstellung des Häkchens geändert werden. Der Wert sollte ein String mit einem Unicode-Zeichen sein.
Die Standardeinstellung für die Property „CHECK_CHAR
“ ist „\u2713“ oder „✓“.
Da dies eine globale Eigenschaft ist, werden alle Kästchenfelder geändert, wenn sie festgelegt ist.
Kästchenvalidierung erstellen
Der Wert eines Kästchenfelds ist entweder 'TRUE'
oder 'FALSE'
, sodass eine Validierung diese Werte (d.h. einen String) akzeptieren und 'TRUE'
, 'FALSE'
, null
oder undefined
zurückgeben sollte.
Das folgende Beispiel zeigt eine Validierung, die ein Texteingabefeld abhängig davon ausblendet oder einblendet, je nachdem, ob das Kästchen angeklickt ist:
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');
}
}