4.14.4.3 复选框

优质
小牛编辑
126浏览
2023-12-01

复选框字段存储一个字符串作为其值,以及一个字符串作为其文本。 其值为“ TRUE”或“ FALSE”,其文本为“ true”或“ false”。

复选框字段

压缩的复选框字段

新建复选框字段

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

复选框构造函数接受一个可选值和一个可选验证器。 可选值应为“ TRUE”,“ FALSE”或布尔值,否则它将默认为false。

可序列化和XML

复选框对应的XML代码如下所示:

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

注意: 引号不需要应用于内部文本。

name属性包含一个引用复选框字段的字符串,内部文本是该字段的值。 内部文本值遵循与构造函数值相同的规则。

请注意,在反序列化和重新序列化之后,所有内部文本值都将大写(“ TRUE”或“ FALSE”)。 在区分工作空间时,这有时很重要。

定制化

复选标记字符

Blockly.FieldCheckbox.CHECK_CHAR属性可用于更改选中标记的外观。 该值应该是包含Unicode字符的字符串。

CHECK_CHAR属性默认为'\u2713'或✓。

这是全局属性,因此设置后将修改所有复选框字段。

创建一个复选框验证器

复选框字段的值为“ TRUE”或“ FALSE”,因此验证程序应接受这些值(即字符串),并返回“ TRUE”,“ FALSE”,null或undefined。

错误警告:不应在验证程序内部使用getValueBoolean方法,因为它基于当前值而不是新值返回。

这是一个验证器的示例,该验证器根据是否选中复选框来隐藏或显示文本输入字段:

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