我给input加上data-operation="{{1}}"这个自定义属性以后,从js的参数e.currentTarget.operation中看到是num类型的1,但是执行了+1代码以后,发现这个1不会与input中现有的value做数学的+1运算,而是直接以字符串拼接的形式拼在input值的后面。这个情况只会在input有输入时出现,如果编译以后input没有输入,就是正常的从0开始不断+1
html代码
<text>您需要:</text>
<input type="text" bindinput="handleInput" class="Inputss" />
<text>份</text>
<view>{{num}}</view>
<button bindtap="handleTapPlus" data-operation="{{1}}">+</button>
<button bindtap="handleTapMinus" data-operation="{{-1}}">-</button>
js代码
Page({
data: {
num:0
},
handleInput(e) {
console.log(e),
this.setData({
num: e.detail.value,
})
},
handleTapPlus(e){
const operation = e.currentTarget.dataset.operation;
console.log(e)
console.log(operation);
this.setData({
num: this.data.num + operation
})
},
handleTapMinus(e){
const operation = e.currentTarget.dataset.operation;
console.log(e);
console.log(operation);
this.setData({
num: this.data.num + operation
})
}
})
编译后没有input输入
无input输入进行两次+1
无input输入进行一次-1
有input输入进行+1
有input输入进行-1
我试着转换格式,但是作用不大。希望各位大佬不吝赐教
handleInput 拿到的数字是字符串 Number() 包一下