当前位置: 首页 > wzjs >正文

网站建设需要哪些材料郑州网站关键词优化

网站建设需要哪些材料,郑州网站关键词优化,网站地图,汕头关键词排名系统文章目录 1.v-model的原理1.1.验证:在input文本输入框中不使用v-model实现双向数据绑定1.2.验证:v-model在下拉菜单中的拆分 2.表单类组件的封装2.1.原理或步骤2.2.示例:表单类组件封装之下拉菜单select的封装 3.使用v-model简化代码完整代码 4.拓展示例:完成input文本输入框的…

文章目录

        • 1.v-model的原理
          • 1.1.验证:在input文本输入框中不使用v-model实现双向数据绑定
          • 1.2.验证:v-model在下拉菜单中的拆分
        • 2.表单类组件的封装
          • 2.1.原理或步骤
          • 2.2.示例:表单类组件封装之下拉菜单select的封装
        • 3.使用v-model简化代码
          • 完整代码
        • 4.拓展示例:完成input文本输入框的组件化封装

1.v-model的原理

v-model本质上是一个语法糖,

  • 在input文本框中,它是由value属性和oninput事件构成的
  • 在多选框中,它是由checked属性和onchange事件构成的
  • 在select下拉菜单中,它是由value属性和onchange事件构成的
1.1.验证:在input文本输入框中不使用v-model实现双向数据绑定
<!-- 1.验证v-model在input文本框中的拆分 -->
<input type="text" v-model="msg">
<p>输出msg的当前值:{{msg}}</p>
<!-- 此时v-model是一个语法糖,由value属性和oninput事件组成
其中,value是让数据向视图单向绑定,oninput是view向model单向绑定,
若要验证可以删掉其中一个看效果 -->
<input type="text" :value="msg" @input="msg=$event.target.value">     

其中,
1.数据变化,令视图跟着变化==>:value
2.视图变化,令数据跟着变化==>@input
$event.target.value表示输入框用户输入的值,
msg表示model层的数据

1.2.验证:v-model在下拉菜单中的拆分
<!-- 2.验证v-model在select下拉菜单中的拆分 -->
<!-- 使用v-model双向绑定: -->
<select name="" id="" v-model="cityId"><option value="101">北京</option><option value="102">上海</option><option value="103">广州</option><option value="104">深圳</option>
</select>
<!-- 在下拉菜单中,v-model这个语法糖是由value属性和onchange事件构成的,验证如下:  -->
<select name="" id="" :value="cityId" @change="cityId=$event.target.value"><option value="101">北京</option><option value="102">上海</option><option value="103">广州</option><option value="104">深圳</option>
</select>
2.表单类组件的封装
2.1.原理或步骤
  • 父传子:数据从父组件传过来,因为父组件要进行表单提交
    绑定数据:绑定的是v-model的拆解,因为不能让子组件直接修改父组件数据
  • 子传父:onchange事件监听用户对数据的修改,监听的结果传值给父组件,让父组件修改数据
父组件:(使用)
//<BaseSelect :cityId="selectId" @事件名="selectId=最新值"></BaseSelect>
<BaseSelect :cityId="selectId" @changeId="selectId=$event"></BaseSelect>
//父组件提供数据
data(){return{selectId:102}}
子组件:(封装)
注意这里不能用v-model,要把它拆解成value属性和onchange事件
<select :value="cityId" @change="handleChange"><option value="101">北京</option>...
</select>
props:{cityId:String
},
methods:{handleChange(e){//console.log(e.target.value);//是否拿到104//this.$emit("事件名".e.target.value);this.$emit("changeId".e.target.value);}}
}
2.2.示例:表单类组件封装之下拉菜单select的封装

父组件:App.vue

//html<!-- $event是获得当前事件的形参 --><base-v-model :cityId="selectId" @changeId="selectId=$event"></base-v-model>//js
import BaseVModel from "./components/BaseVModel.vue"
export default {components: {BaseVModel,},data(){selectId:'102',//此处改成数数字然后子组件的props限制改成Number也可以}
}

子组件:BaseVModel.vue

//html
<select name="" id="" :value="cityId" @change="handleChange"><option value="101">北京</option><option value="102">上海</option><option value="103">广州</option><option value="104">深圳</option>
</select>
//js
props:{cityId:String//父传子:接收父组件传过来的数据
},
methods: {handleChange(e){console.log(e.target.value);//获取用户改变城市后对应的id:102,103...this.$emit("changeId",e.target.value);//子传父:把监听到的用户输入传给父组件},
}
3.使用v-model简化代码

使用v-model进行对上例代码简化,思路是把绑定的事件和属性凑成value+input的形式

  • 子组件:把:value=cityId替换为:value=value
  • 子组件:把this.$emit("changeId",e.target.value)替换成this.$emit("input",e.target.value)
  • 父组件:把:cityId:selectId替换成:value:selectId
  • 父组件:把@changeId="selectId=$event"替换成@input="selectId=$event"
  • 当父组件凑够:value@input后,可以使用v-model替换它们,即v-model="selectId"
完整代码

父组件:App.vue

//html
<!-- <base-v-model :value="selectId" @input="selectId=$event"></base-v-model> -->
<!-- 凑齐了:value和@input之后,就可以把它们改成v-model,从而达到了简化代码的目的 -->
<base-v-model v-model="selectId"></base-v-model>
//js
data:selectId:'102'

子组件:BaseVModel.vue

//html
<select name="" id="" :value="value" @change="handleChange"><option value="101">北京</option><option value="102">上海</option><option value="103">广州</option><option value="104">深圳</option>
</select>
//js
props:{// cityId:Stringvalue:String//改成用value接收,input的拓展示例也用这个value属性
},methods: {handleChange(e){console.log(e.target.value);// this.$emit("changeId",e.target.value);this.$emit("input",e.target.value);},
4.拓展示例:完成input文本输入框的组件化封装

父组件:App.vue

//html
<!-- 拓展示例 -->
<base-v-model v-model="inputMsg"></base-v-model>
<p>input输入了什么:{{inputMsg}}</p>
//js
data(){inputMsg:"你好世界"
}

子组件:BaseVModel.vue

//html
<!-- 5.拓展和应用:把一个input文本框改成组件 -->
<input type="text" :value="value" @input="inputFunc">
//js
props:{// cityId:Stringvalue:String//改成用value接收,input的拓展示例也用这个value属性
},
methods: {inputFunc(e){this.$emit("input",e.target.value);}
},

文章转载自:

http://DVKfMvha.bnyLg.cn
http://9H83ZpoS.bnyLg.cn
http://5DrOBI1H.bnyLg.cn
http://gs9TBgnX.bnyLg.cn
http://9ue3OcP1.bnyLg.cn
http://045tnVSY.bnyLg.cn
http://kGw5Wt6E.bnyLg.cn
http://Py2vKOcn.bnyLg.cn
http://YIRWGqDG.bnyLg.cn
http://Zu3FPqpV.bnyLg.cn
http://L5waehrj.bnyLg.cn
http://QzfKL12s.bnyLg.cn
http://s1UXUZJ1.bnyLg.cn
http://xHAag8MT.bnyLg.cn
http://53kIn7A0.bnyLg.cn
http://kDKEwZYt.bnyLg.cn
http://7Yh8vNCz.bnyLg.cn
http://N07ujRKf.bnyLg.cn
http://ky3G11VX.bnyLg.cn
http://MrClmStq.bnyLg.cn
http://uoSBbrwV.bnyLg.cn
http://8Ia6rxcR.bnyLg.cn
http://Hl2AM03e.bnyLg.cn
http://Le5mAQo7.bnyLg.cn
http://7JHsp0xI.bnyLg.cn
http://1Kn3fAk1.bnyLg.cn
http://sBEaWoCV.bnyLg.cn
http://TUWpUFi7.bnyLg.cn
http://RESqWROM.bnyLg.cn
http://pC0jT8nn.bnyLg.cn
http://www.dtcms.com/wzjs/746241.html

相关文章:

  • 广州网站设计培训百度地图网页版入口
  • asp.net 网站建设方案王府井网上商城是正品吗
  • 网站怎么做搜索功能广东建设工程交易中心网站
  • iis5.1 建立网站淮安市住房和城乡建设局网站
  • 网站建设虚拟空间广东网站建设专业公司
  • 广州网站服务建网站的公司价格
  • 商丘柘城做网站游戏推荐网站怎么做
  • 两学一做网站专栏公司注册资金100万是什么意思
  • 免费建立自己的网站做海报哪个网站好
  • 深圳哪里有做网站的深圳手机商城网站设计公司
  • 做plc课程设计的网站国外图床 wordpress
  • 互联网服务平台wordpress分类seo标题
  • 北京的招聘网站有哪些怎么添加网站权重
  • .net php开发网站开发关于色彩搭配的网站
  • 佛山建设专业网站wordpress怎么添加子栏目
  • 增城区建设局网站seo技术培训教程
  • 毕业设计开题报告网站开发电子商务网站建设与管理课后心得
  • 网站建设seo优化公司信阳建设网站哪家好
  • 彩票网站建设哪里新闻型网站建设
  • 温州市名城建设集团有限公司网站网站访客qq获取系统 报价
  • 浙江公铁建设工程有限公司网站知更鸟 wordpress
  • 网站开发 平面设计互联网营销推广渠道
  • 吉安网站建设零售网站开发
  • 高端网站定制的方法营销型网站规划建设的七大要素
  • 网站用什么切版二级域名ip查询
  • 中国建设银行官方网站登录入口网站开发公司徐州
  • 集团网站 wordpress网店推广发展趋势
  • 石家庄 网站开发怎么优化自己网站的关键词
  • 网站结的建设ppt哪些网站可以做爬虫实验
  • 制作网站免费做百度推广网站多少钱