收藏
回答

picker-view 动态获取数据情况下,如何设置默认值

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 需求 picker-view 微信iOS客户端 6.5.3 1.9.94

从官方文档中可以看到picker-view组件的value值可用于设置组件的第几项(也就是默认值),但是如果picker-view中选项数组的是在页面加载后从服务器获取再设置的,而piker-view组件的value值是在data里设置的,所以会出现value值先于选项数组赋值的情况,这样会出现value值不起效,无法设置默认值


官方案例中,数组的赋值是通过函数获取的,不是setData,也就是说选项数组和value的设置可以在加载时按序赋值,这样的确可以解决value值先于选项数组赋值,默认值不起效的情况,但是如果选项数组的数据请求需要用到页面参数时呢,该怎么解决


回答关注问题邀请回答
收藏

2 个回答

  • Tim
    Tim
    2018-04-12
    <picker-view indicator-style="height: 50px;" style="width: 100%; height: 300px;" value="{{value}}" bindchange="bindChange">
      <picker-view-column>
        <view wx:for="{{years}}" style="line-height: 50px">{{item}}年</view>
      </picker-view-column>
    </picker-view>
    <button bindtap='click'>输出</button>
     
    function getArr(){
        return [1,2,3,4]
    }
     
    Page({
        data: {
            years: [],
            value: [1]
        },
        onLoad: function (options) {
            this.setData({
                years: getArr(),
                value: [3]
            })
        },
        click() {
            this.setData({
                value: [2]
            })
        }
    })

    例如这个例子,click事件能更改value的值,但在onload里获取数组的值后无法更改value的值

    2018-04-12
    有用
    回复
  • 韬々
    韬々
    2018-04-12

    没明白问题是什么。


    就算数据需要走网络请求异步加载,那也同样可以在收到后台返回之后再调用setData方法设置picker-view-column数据以及下标value。

    2018-04-12
    有用
    回复
登录 后发表内容