# Picker 选择框

表单类型组件,结合form组件使用

# 单列选择

<wx-form ref="form">
  <wx-form-body>
    <wx-form-group title="单列选择">
      <wx-picker v-model="v1" :data="data1" label="证件类型" placeholder="请选择证件类型"></wx-picker>
    </wx-form-group>
  </wx-form-body>
</wx-form>

<script>
export default {
  data() {
    return {
      data1: [
        { label: "身份证", value: 0 },
        { label: "学生证", value: 1 },
        { label: "军官证", value: 2 },
        { label: "护照", value: 3 },
        { label: "其他", value: 4 }
      ],
      v1: null
    };
  }
};
</script>

# 级联选择

通过 cascade-depth 指定级联层级数。

<wx-form ref="form">
  <wx-form-body>
    <wx-form-group title="级联选择">
      <wx-picker v-model="v2" :data="data2" label="详细地址" :cascade-depth="3" placeholder="请选择详细地址"></wx-picker>
    </wx-form-group>
  </wx-form-body>
</wx-form>

<script>
export default {
  data() {
    return {
      data2: [
        {
          label: "广东",
          value: 0,
          children: [
            {
              label: "广州",
              value: 0,
              children: [
                {
                  label: "海珠区",
                  value: 0
                },
                {
                  label: "番禺区",
                  value: 1
                }
              ]
            },
            {
              label: "佛山",
              value: 1,
              children: [
                {
                  label: "禅城区",
                  value: 0
                },
                {
                  label: "南海区",
                  value: 1
                }
              ]
            }
          ]
        },
        {
          label: "广西",
          value: 1,
          children: [
            {
              label: "南宁",
              value: 0,
              children: [
                {
                  label: "青秀区",
                  value: 0
                },
                {
                  label: "兴宁区",
                  value: 1
                }
              ]
            },
            {
              label: "桂林",
              value: 1,
              children: [
                {
                  label: "象山区",
                  value: 0
                },
                {
                  label: "秀峰区",
                  value: 1
                }
              ]
            }
          ]
        }
      ],
      v2: null
    };
  }
};
</script>

选择数据要求

选择数据的层级数必须与 cascade-depth 指定的层级数一致

# 默认值/显示格式/不可用

<wx-form ref="form">
  <wx-form-body>
    <wx-form-group title="默认值/显示格式/不可用">
      <wx-picker v-model="v3" :data="data1" label="证件类型"></wx-picker>
      <wx-picker v-model="v4" :data="data2" label="详细地址" :cascade-depth="3"></wx-picker>
      <wx-picker v-model="v4" :data="data2" label="详细地址" disabled :cascade-depth="3" cascade-text-separator="/"></wx-picker>
    </wx-form-group>
  </wx-form-body>
  <wx-form-tips>详细地址,选中值:{{displayV}}</wx-form-tips>
</wx-form>

<script>
export default {
  data() {
    return {
      data1: [...], // 略
      data2: [...], // 略
      v3: 3,
      v4: [0, 1, 0],
      displayV: '[]'
    };
  },
  created() {
    this.displayV = JSON.stringify(this.v4);
  },
  watch: {
    v4(val) {
      this.displayV = JSON.stringify(val);
    }
  }
};
</script>

# 数据校验

<wx-form ref="form">
  <wx-form-body>
    <wx-form-group title="单列选择">
      <wx-picker v-model="v1" :data="data1" label="证件类型" placeholder="请选择证件类型" required></wx-picker>
    </wx-form-group>
  </wx-form-body>
  <wx-form-action>
    <wx-button @click="handleClick">确定</wx-button>
  </wx-form-action>
</wx-form>

<script>
export default {
  data() {
    return {
      data1: [...], // 略
      v1: null
    };
  },
  methods: {
    handleClick() {
      this.$refs.form.validate(error => {
        if (error) {
          this.$tooltip(error)
        } else {
          this.$toast("验证成功", { type: "success" })
        }
      });
    }
  }
};
</script>

提示

表单布局和表单校验可参考Form

# Picker Attributes

参数 说明 类型 可选值 默认值
v-model/value 绑定值 String/Number - -
label 选择框标题 String - -
placeholder 选择框占位文本 String - -
required 是否必选 Boolean - false
emptyTips 空值校验提示信息 String - -
disabled 禁用状态 Boolean - false
data 可选择数据列表 Array - []
cascadeDepth 可选数据级联层级数 Number - 1
cascadeTextSeparator 自定义级联文本显示分隔符 String - " "

data 格式说明

  [
    { label: "", value: "", children: []}
  ]

data 为树形结构,树的层级数即是级联层级数

# Picker Events

事件名称 说明 回调参数
select 选取数据时触发 result: Array,所选数据的值数组
back
选择框