Pole wyboru zawiera ciąg znaków jako wartość, a ciąg znaków jako tekst. Jego wartość to 'TRUE'
lub 'FALSE'
, a jej tekst to 'true'
lub 'false'
.
Pole wyboru
Pole wyboru w zwiniętym bloku
na podstawie trendów
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');
}
};
Konstruktor pól wyboru przyjmuje wartość opcjonalną i opcjonalny validator. Wartością opcjonalną musi być 'TRUE'
, 'FALSE'
lub wartość logiczna. W przeciwnym razie domyślna wartość to false
.
Serializacja
JSON
Kod JSON pola wyboru wygląda tak:
{
"fields": {
"FIELDNAME": true
}
}
Gdzie FIELDNAME
to ciąg znaków odwołujący się do pola wyboru, a wartość to wartość do zastosowania do pola. Wartość musi być wartością logiczną.
XML
Kod XML pola wyboru wygląda tak:
<field name="FIELDNAME">TRUE</field>
lub
<field name="FIELDNAME">true</field>
Gdzie atrybut name
zawiera ciąg znaków odwołujący się do pola wyboru, a tekst wewnętrzny to wartość do zastosowania do pola. Wewnętrzna wartość tekstowa podlega tym samym regułom co wartość konstruktora.
Pamiętaj, że po deserializacji i reserializacji wszystkich wartości w tekście wewnętrznym wszystkie wartości wewnętrzne będą pisane wielkimi literami ('TRUE'
lub 'FALSE'
). Jest to czasem istotne przy różnicowaniu obszarów roboczych.
Personalizacja
Znacznik wyboru
Właściwość Blockly.FieldCheckbox.CHECK_CHAR
umożliwia zmianę wyglądu znacznika wyboru. Wartość powinna być ciągiem znaków Unicode.
Właściwość CHECK_CHAR
przyjmuje domyślnie wartość „\u2713” lub ✓.
Jest to właściwość globalna, więc po ustawieniu pola wyboru będzie modyfikować wszystkie pola wyboru.
Tworzenie walidatora pól wyboru
Wartość pola wyboru to 'TRUE'
lub 'FALSE'
, więc walidator powinien zaakceptować te wartości (tj. ciąg) i zwrócić 'TRUE'
, 'FALSE'
, null
lub undefined
.
Oto przykład walidatora, który ukrywa lub wyświetla pole do wprowadzania tekstu w zależności od tego, czy pole jest zaznaczone:
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');
}
}