栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

Vue.js实现双向数据绑定方法(表单自动赋值、表单自动取值)

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Vue.js实现双向数据绑定方法(表单自动赋值、表单自动取值)

1、使用Vue.js实现双向表单数据绑定,例子







财产查勘处理






  
    请输入物损查看信息
    

报案信息
* 是否需要 * 没错必须 *


#VueFormSub.js(实现双向绑定主要代码)

//实现取值
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表单数据(可以只传入initDate数据源,formid需要绑定的dom)
VueFormSub.initVue = function(initDate,formid,httpMethod, url, params){
  if(initDate instanceof Object){
    
    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
   });
 }
      }
    });
  }
};

#对需要绑定的对象进行解析成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;
};
#使用实例