购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 选择器picker

我们要学习的第二个普通组件是“选择器”。当然,你可能更熟悉它的另一个名字:下拉列表。

要了解picker组件的使用方法,请访问右侧二维码。

Hello World项目

要使用picker组件,我们需要准备一些选项供picker组件显示给用户:

// index.js
data: {
  inputValue: "",
  pickerItemArray: ['Item 0', 'Item 1', 'Item 2'],

我们还需要准备一个变量来记录用户选择的选项:

pickerItemArray: ['Item 0', 'Item 1', 'Item 2'],
pickerIndex: 0,

有了pickerItemArray和pickerIndex,我们就可以显示出一个选择器了:

<!-- index.wxml -->
<picker range="{{ pickerItemArray }}"
  value="{{ pickerIndex }}">
    <view>
      {{ pickerItemArray[pickerIndex] }}
    </view>
</picker>

picker 组件中的 view 组件决定了显示的内容。由于 pickerIndex 的默认值为0,同时pickerItemArray的第0项为“Item 0”,因此会显示出“Item 0”,如图2-8所示。

单击“Item 0”后,会弹出选择器,如图2-9所示。

图2-8 选择器的显示效果

图2-9 单击“Item 0”后的显示效果

现在的问题是,无论我们选择了选择器中的哪一项,picker组件始终会显示“Item 0”。这是由于 picker 组件显示的内容是由 picker 组件中的 view 组件决定的,而 view 组件显示的内容是pickerItemArray[pickerIndex]。在用户选择了其他选项之后,pickerIndex的值并没有发生变化。因此,picker组件依然会显示“Item 0”。

为了让picker组件显示出用户选择的选项,需要先获得用户选择的选项,再修改pickerIndex变量的值。为此,我们首先设置picker组件的bindchange属性,将它关联到一个函数:

<picker range="{{ pickerItemArray }}"
  value="{{ pickerIndex }}" bindchange="pickerBindChange">
    ...

与我们获得input组件的内容的方法类似,我们也通过pickerBindChange函数的参数获得了用户选择的选项的索引:

// index.js
pickerBindChange: function (e) {
  console.log(e.detail.value);
  this.setData({
    pickerIndex: e.detail.value
  });
},

在上面的代码中,我们将用户选择的选项的索引输出,并将索引值设置给pickerIndex变量。这样一来,我们就知道用户选择了哪一个选项,并且可以将用户选择的选项显示在 picker组件中了。

我们能否通过双向数据绑定来获得用户选择的选项?请在“动手做”环节中测试一下吧! Fn2BEwERtU4nMPmP/q29kaDlFCHP9AEqUf5jf+iQuTIg4/BM3gD3Ar3LNz371X++

点击中间区域
呼出菜单
上一章
目录
下一章
×