Vue.js實現(xiàn)雙向數(shù)據(jù)綁定方法(表單自動賦值、表單自動取值)
更新時間:2018年08月27日 10:13:27 作者:白楓J
今天小編就為大家分享一篇Vue.js實現(xiàn)雙向數(shù)據(jù)綁定方法(表單自動賦值、表單自動取值),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
1、使用Vue.js實現(xiàn)雙向表單數(shù)據(jù)綁定,例子
<!--html代碼--> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>財產(chǎn)查勘處理</title> <link rel="stylesheet" type="text/css" href="../css/global.css" rel="external nofollow" /> <link rel="stylesheet" type="text/css" href="../css/bootstrap.min.css" rel="external nofollow" /> <link rel="stylesheet" type="text/css" href="../css/AdminLTE.min.css" rel="external nofollow" /> <link rel="stylesheet" type="text/css" href="../css/propertySurvey.css" rel="external nofollow" /> </head> <body> <div class="container-fluid"> <div style="text-align: center; height:30px;background:#F4F9FD;padding:10px 0px;border-bottom:1px solid #000; font-weight: bold;">請輸入物損查看信息</div> <h4 class="box-title"> <i class="glyphicon glyphicon-play-circle" style="color: #82C542;"></i> 報案信息 </h4> <hr style="height: 3px; border: none; border-top: 3px solid #75C2D2;" /> <div class="row text-center" style="margin-top: -23px; padding: 3px 50px; border-bottom: 1px solid #DBEEF1;"> <div style="width: 33%; float: left; text-align: left;"> <label>損失方</label><input v-model="RegistInfo_name" type="text" name="RegistInfo_name"/> </div> <div style="width: 33%; float: left; text-align: left;"> <label>聯(lián)系人</label><input v-model="RegistInfo_user" type="text" name="RegistInfo_user"/> </div> <div style="width: 33%; float: right; text-align: left;"> <label>聯(lián)系方式</label> <input v-model="RegistInfo_phone" name="RegistInfo_phone" type="text"/> </div> </div> <div class="row text-center" style="margin-top: -23px; padding: 3px 50px; border-bottom: 1px solid #DBEEF1;"> <div style="width: 33%; float: left; text-align: left;"> <label>損失方1</label><input v-model="Prplregist_name" type="text" name="Prplregist_name"/> </div> <div style="width: 33%; float: left; text-align: left;"> <label>聯(lián)系人1</label><input v-model="Prplregist_user" type="text" name="Prplregist_user"/> </div> <div style="width: 33%; float: right; text-align: left;"> <label>聯(lián)系方式1</label> <input v-model="Prplregist_phone" name="Prplregist_phone" type="text"/> </div> </div> <div class="row text-center" style="padding: 3px 50px; border-bottom: 1px solid #DBEEF1;"> <div style="width: 33%; float: left; text-align: left;"> <label>查勘估損金額</label> <input v-model="RegistInfo_chakan_money" name="RegistInfo_chakan_money" type="text" value="400.00" /> * </div> <div style="width: 33%; float: left; text-align: left;"> <label>施救費金額</label> <input v-model="RegistInfo_rescue_money" name="RegistInfo_rescue_money" type="text" name="" id="" value="0.00" /> </div> <div style="width: 33%; float: right; text-align: left;"> <label>需要施救</label> <input type="checkbox" />是否需要 </div> </div> <div class="row text-center" style="padding: 3px 50px; border-bottom: 1px solid #DBEEF1;"> <div style="width: 33%; float: left; text-align: left;"> <label>查勘估損金額1</label> <input v-model="Prplregist_chakan_money" name="Prplregist_chakan_money" type="text" value="400.00" /> * </div> <div style="width: 33%; float: left; text-align: left;"> <label>施救費金額1</label> <input v-model="Prplregist_rescue_money" name="Prplregist_rescue_money" type="text" name="" id="" value="0.00" /> </div> <div style="width: 33%; float: right; text-align: left;"> <label>需要施救1</label> <input type="checkbox" />是<input type="checkbox" />沒錯<input type="checkbox" />必須 </div> </div> <div class="row text-center" style="padding: 3px 50px; border-bottom: 1px solid #DBEEF1;"> <div style="width: 67%; float: left; text-align: left;"> <label>查勘地點</label> <input v-model="address" name="address" type="text" style="width: 400px;" /> * </div> <div style="width: 33%; float: left; text-align: left;"> <label>查勘日期</label> <input v-model="RegistInfo_chakan_data" name="RegistInfo_chakan_data" type="text" name="" id="" value="2017-03-09" /> </div> </div> <div class="row text-center" style="padding: 3px 50px; border-bottom: 1px solid #DBEEF1;"> <div style="height: 50px; text-align: left;"> <label>施救過程描述</label> <input v-model="RegistInfo_say" name="RegistInfo_say" type="text" style="width: 900px; height: 50px;" /> </div> </div> <div class="row text-center" style="padding: 3px 50px; border-bottom: 1px solid #DBEEF1;"> <div style="height: 50px; text-align: left;"> <label>備注</label> <input v-model="remark" name="remark" type="text" style="width: 900px; height: 50px;" /> </div> </div> <div class="row text-center" style="padding: 3px 50px; border-bottom: 1px solid #DBEEF1;"> <div style="height: 50px; text-align: left;"> <select class="select2"> <option value="123" id="sel1">123</option> <option value="456" id="sel2">456</option> <option value="789" id="sel3">789</option> </select> </div> </div> <div class="row text-center" style="padding: 3px 50px; border-bottom: 1px solid #DBEEF1;"> <div style="height: 50px; text-align: left;"> <input type="radio" id="google" value="Google" v-model="RegistInfo_radio" name="RegistInfo_radio"> <label for="google">Google</label> <br> <input type="radio" id="runoob" value="Runoob" v-model="RegistInfo_radio" name="RegistInfo_radio"> <label for="runoob">Runoob</label> </div> </div> <div class="row text-center" style="padding: 3px 50px; border-bottom: 1px solid #DBEEF1;"> <div style="height: 50px; text-align: left;"> <input type="radio" id="helongjun" value="helongjun" v-model="RegistInfo_helongjun" name="RegistInfo_helongjun"> <label for="helongjun">helongjun</label> <br> <input type="radio" id="longjun" value="longjun" v-model="RegistInfo_helongjun" name="RegistInfo_helongjun"> <label for="longjun">longjun</label> </div> </div> <div class="row text-center" style="padding: 3px 50px; border-bottom: 1px solid #DBEEF1;"> <div style="height: 50px; text-align: left;"> <input type="radio" id="testOne" value="testOne" v-model="testOne" name="testOne"> <label for="helongjun">testOne</label> <br> <!--<input type="radio" id="testOne" value="testTwo" v-model="testOne" name="testOne"> <label for="longjun">testTwo</label>--> </div> </div> <div class="row text-center" style="padding: 3px 50px; border-bottom: 1px solid #DBEEF1;"> <div style="height: 50px; text-align: left;"> <select v-model="RegistInfo_selected" name="RegistInfo_selected"> <option value="">選擇一個網(wǎng)站</option> <option value="baidu">baidu</option> <option value="google">Google</option> </select> </div> </div> <div class="text-center row"> <button>暫存(S)</button> <button onclick="getInputVal()">返回(F)</button> </div> </div> <script type="text/javascript" src="../js/vue.min.js" ></script> <script type="text/javascript" src="../js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="../js/bootstrap.min.js"></script> <script type="text/javascript" src="../js/bootstrap-datetimepicker.min.js"></script> <script type="text/javascript" src="../VueFormSub.js" ></script>
#VueFormSub.js(實現(xiàn)雙向綁定主要代碼) //實現(xiàn)取值 var VueFormSub = function(formid){ this.$form = ($("#" + formid).length !=0)?$("#" + formid):$("."+formid); var models = $("*[v-model != '']", this.$form); var vueData = {}; $.each(models,function(idx,dom){ var key = $(dom).attr("name"); if (undefined != key){ var dValue = $(dom).val(); $(dom).val(dValue); var beanName = key.split("_"); if(beanName.length < 2){ vueData[beanName] = dValue; vueData[beanName] = $("input[type='radio'][name='"+key+"']:checked").val(); }else{ if(vueData[beanName[0]] == undefined){ vueData[beanName[0]] = {}; }else{ if($(dom).attr("type") == "radio"){ var tempVal = $("input[type='radio'][name='"+key+"']:checked").val(); vueData[beanName[0]][beanName[1]] = tempVal; }else{ vueData[beanName[0]][beanName[1]]=dValue; } } } } }); return vueData; }; #初始化Vue表單數(shù)據(jù)(可以只傳入initDate數(shù)據(jù)源,formid需要綁定的dom) VueFormSub.initVue = function(initDate,formid,httpMethod, url, params){ if(initDate instanceof Object){ /*if(initDate.length !=0){}*/ var initJson = VueFormSub.ObjConvert(initDate); new Vue({ el : ($("#"+formid).length != 0)?'#'+formid:'.'+formid, data : initJson }); }else{ if (httpMethod != "get" && params && typeof (params) == "object"){ params = JSON.stringify(params); } if(params!= null){ params.rs = Math.random(); }else{ params = {'rs':Math.random()}; } $.ajax({ type: httpMethod, url: "/cxh" + url, data: params, cache:false, async: true, contentType: 'application/json', dataType: 'json', success: function (returnData) { if(returnData.length != 0){ var vueDate = VueFormSub.ObjConvert(returnData); new Vue({ el:($("#"+formid).length != 0)?'#'+formid:'.'+formid, data : vueDate }); } } }); } }; #對需要綁定的對象進(jìn)行解析成Vue支持的格式 VueFormSub.ObjConvert = function(dataObj){ var json = {}; $.each(dataObj,function(id,param){ if(param instanceof Object){ $.each(param, function(rid,rparam){ if(rparam instanceof Object){ json[id] = VueFormSub.ObjConvert(param); }else{ json[id+"_"+rid] = rparam; } }); }else{ json[id]=param; } }); return json; };
#使用實例 <script> #初始化數(shù)據(jù)data var initVue = { RegistInfo_name : 'legend', RegistInfo_user : '龍軍', RegistInfo_phone : '1008611', RegistInfo_chakan_money : '100', RegistInfo_rescue_money : '1000', address : '廣東省汕頭市潮南區(qū)', RegistInfo_chakan_data : '2017-5-7', RegistInfo_say : '這個只是測試用的', remark : '龍軍用來測試的', Prplregist_name : '林總', Prplregist_user : '林老板', Prplregist_phone : '10010', Prplregist_chakan_money : '一萬塊', Prplregist_rescue_money : '一個億', RegistInfo_radio : "Runoob", RegistInfo_selected : "google", RegistInfo_helongjun : "helongjun", testOne:"" }; //初始化Vue表單 VueFormSub.initVue(initVue,"container-fluid"); //返回按鈕單擊 function getInputVal(){ //調(diào)用自動表單封裝 var resultVal = new VueFormSub("container-fluid"); console.log(resultVal); } #注意:input表單中的name屬性必須指定,最好和input表單中的v-model的值一樣 <script>
最終效果:
以上這篇Vue.js實現(xiàn)雙向數(shù)據(jù)綁定方法(表單自動賦值、表單自動取值)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Plotly.js在Vue中創(chuàng)建交互式散點圖的示例代碼
Plotly.js是一個功能強大的JavaScript庫,用于創(chuàng)建交互式數(shù)據(jù)可視化,它支持各種圖表類型,包括散點圖、折線圖和直方圖,在Vue.js應(yīng)用程序中,Plotly.js可用于創(chuàng)建動態(tài)且引人入勝的數(shù)據(jù)可視化,本文介紹了使用Plotly.js在Vue中創(chuàng)建交互式散點圖,需要的朋友可以參考下2024-07-07Vue3中ref和reactive的基本使用及區(qū)別詳析
這篇文章主要給大家介紹了關(guān)于Vue3中ref和reactive的基本使用及區(qū)別的相關(guān)資料,需要的朋友可以參考下2022-07-07vue 中使用 vxe-table 制作可編輯表格的使用過程
這篇文章主要介紹了vue 中使用 vxe-table 制作可編輯表格的使用過程,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08Vue+ElementUI table實現(xiàn)表格分頁
這篇文章主要為大家詳細(xì)介紹了Vue+ElementUI table實現(xiàn)表格分頁,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-12-12vite項目import.meta.env如何能獲取非VITE開發(fā)的環(huán)境變量
這篇文章主要介紹了vite項目import.meta.env如何能獲取非VITE開發(fā)的環(huán)境變量問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05