今个改项目的时候,发现个奇怪现象::😂😂 我在option初始显示的时候,得到的seleced是个number类型,但是我单机下拉框更改option的选项之后,得到的值的类型就从number变成了string类型。就很奇怪,折腾我😂😂😂😂😂找了半天问题产生的原因,尝试了各种办法。
<div class="speed">
云台速度
<select v-model="selected" @change="changeSpeed(selected)">
<option value=1>1</option>
<option value=2 selected>2</option>
</select>
</div>
// 云台速度
private selected = 1;
private changeSpeed(selected: number) {
this.selected = selected;
console.log(typeof selected);
console.log(this.selected);
}
方式一:Number()
🎈 直接转化成number类型
首先我看没有报错,就想着强行更改他的类型好了,直接用` this.selected = Number(selected);强行转化成number类型,也是可以实现我的目的。
private changeSpeed(selected: number) {
this.selected = Number(selected); // 直接转化啦
}
方式二:骚气十足🎈 :value
oh,原来是因为,我上面代码中value没有冒号,说明是字符串,只要给前面加上冒号就行了。所以就算value值是固定的,不是动态的,but在数字类型的时候都要加冒号的。 当然value后面的树,加不加引号都没啥影响。也可以写
:value="1"
得到的依然是number。
<select v-model="selected" @change="changeSpeed(selected)">
<option :value=1>1</option> <!-- 加:这个就很骚气 -->
<option :value=2 selected>2</option>
</select>
🦆🦆🦆🦆
🎈🎈🎈🎈
🎈🎈🎈🎈
ok,问题解决啦。随意操作,得到的都是number啦