首先,简单说一下,iview使用方式(官方文档很明确了),首先下载iview提供的压缩包,把里面的dist文件夹解压到项目目录中
然后要在哪个页面使用哪个组件,就在该页面的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只有一个
//官方示例
<i-input-number value="{{ value2 }}" min="0" max="100" step="0.2"
bindchange="handleChange2" />
//js
handleChange2 ({ detail }) {
this.setData({
value2: detail.value
})
}
这个时候出现一个问题,他的长时间只是用来取当前number-input的值的,但是我在项目中将这个组件写在了for循环里,也就是说 我至少需要一个index,才能知道我改变的是数组中谁的number,上代码:
<block wx:for='{{productList}}'>
//删除多余代码——————————————————
<i-input-number bindtap='setNumber' id='{{index}}' i-class='num-in'
value="{{item.quantnum}}" min="1" max="20" bindchange="numberChange" />
//删除多余代码——————————————————
</block>
//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来赋值给数组中某个元素属性。