小程序使用iView Weapp组件传值问题

首先,简单说一下,iview使用方式(官方文档很明确了),首先下载iview提供的压缩包,把里面的dist文件夹解压到项目目录中
小程序使用iView Weapp组件传值问题_第1张图片
然后要在哪个页面使用哪个组件,就在该页面的json文件中

{
  "usingComponents": {
    "i-tabs": "../../dist/tabs/index",
    "i-tab": "../../dist/tab/index",
    "i-icon": "../../dist/icon/index",
    "i-input-number": "../../dist/input-number/index",
    "i-checkbox-group": "../../dist/checkbox-group/index",
    "i-checkbox": "../../dist/checkbox/index",
    "i-radio-group": "../../dist/radio-group/index",
    "i-radio": "../../dist/radio/index",
    "i-toast": "../../dist/toast/index"
  } 
}

今天要说的是因为iview weapp,包括vant(有赞出品的小程序组件库),提供的组件偏少,提供的组件api也偏少,比如我用input-number的过程中,官方文档提供的api只有一个

//官方示例
number value="{{ value2 }}" min="0" max="100" step="0.2" 
    bindchange="handleChange2" />
//js    
handleChange2 ({ detail }) {
    this.setData({
        value2: detail.value
    })
}

小程序使用iView Weapp组件传值问题_第2张图片

这个时候出现一个问题,他的长时间只是用来取当前number-input的值的,但是我在项目中将这个组件写在了for循环里,也就是说 我至少需要一个index,才能知道我改变的是数组中谁的number,上代码:

for='{{productList}}'>
    //删除多余代码——————————————————

       'setNumber' id='{{index}}' i-class='num-in' 
       value="{{item.quantnum}}" min="1" max="20" bindchange="numberChange" />

    //删除多余代码——————————————————

//js
setNumber(event) {
  this.setData({
    [`productList[${event.target.id}].quantnum`]: this.data.quantnum
  })
},
// 修改数量
numberChange({
  detail
}) {
  this.setData({
    quantnum: detail.value
  })
},

很简单,我添加了一个小程序自带的绑定事件bindtap,把当前index传了进去,numberChange方法改变一个全局变量quantnum,然后将quantnum通过bindtap方法绑定的setNumber来赋值给数组中某个元素属性。

你可能感兴趣的:(Javascript,小程序,前端)