Pola pola wyboru

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.

Pole wyboru z serduszkiem zamiast znacznika

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');
    }
  }

Pole wyboru z walidatorem