vue獲取v-model數據類型boolean改變成string


問題描述

今天產品問我一線上bug,怎么radio類型改不了

問題分析

看代碼,之前的哥們兒是怎么寫的

//頁面
<div class="ui-form-box">
    <div class="ui-form-checkbox">
        <label for="delivery">
            <input type="radio" name="delivery" value="true" v-model="delivery">是
        </label>
    </div>
    <div class="ui-form-checkbox">
        <label for="delivery">
            <input type="radio" name="delivery" value="false" v-model="delivery">否
        </label>
    </div>
</div>

// 獲取數據
delivery: me.$data.delivery ? "1" : "0",

bug原因

按道理來說,選中了 否,value 為false, 提交的 delivery 值應該是 "0", 但實際上無論怎么選擇,都是 "1"

打印出

typeof me.$data.delivery  // string
所以取到的 me.$data.delivery 實際上是 "false"

問題出在綁定 radio 時候數據綁定的不對
那么改成

 <input type="radio" name="delivery" value=true v-model="delivery">是

去掉 true 的 "" 就對了么,還是不對
應該改成

 <input type="radio" name="delivery" :value=true v-model="delivery">是
 
或者
<input type="radio" name="delivery" :value="true" v-model="delivery">是

使用 v-bind
加: 代表取的是變量, 是值
不加 :代表取的是字符串

自己測試代碼

<!DOCTYPE html>
<html lang="en">
   <head>
       <title></title>
       <meta charset="utf-8">
       <script src="https://cdn.bootcss.com/vue/2.5.17-beta.0/vue.js"></script>
   </head>
   <body>
       <div id="app">
           <div>
               <label>
                   <input type="radio" name="delivery" :value="true" v-model="delivery">是
               </label>
               <label>
                   <input type="radio" name="delivery" :value="false" v-model="delivery">否
               </label>
           </div>
           <button @click="getDelivery">獲取delivery</button>
       </div>
       <script>
           var app = new Vue({
               el: '#app',
               data: {
               	delivery: true
               },
               methods: {
                   getDelivery: function () {
                       var a = this.$data.delivery;
                       console.log("a= ", a  ," ,typeof a = ", typeof a);
                       var b = a ? "1" : "0";
                       console.log("b", b);
                   }
               }
   		})
       </script>
   </body>
</html>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM