Vue.js实训【基础理论(5天)+项目实战(5天)】博客汇总表【详细笔记】

目   录

1、Vue表单

原生JS实现异步表单提交

运行截图

代码

核心指令

单选框、密码框、多行文本框

单选

多选

勾选

下拉列表(每个option标签都要有value值)

组件汇总案例

运行截图

代码

ToDoList案例

JS堆栈内存图

运行截图

代码

2、计算属性(对data中的数据进行加工处理)

实现

computed-案例

运行截图

代码

3、watch监听(监听data中数据变化)

实现

案例

运行截图

代码


1、Vue表单

Vue.js表单 是 双向数据绑定的。

原生JS实现异步表单提交

运行截图

代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>01、原生JS实现异步表单提交</title>
</head><body><!-- 如果是异步提交,就可以不需要使用form标签 --><p>姓名: <input type="text"> </p><p>密码: <input type="password"></p><button>提交</button><!-- 传统同步模式 action:服务器处理地址--><form action=""><input type="text" name="username"><input type="password" name="password"><input type="submit"></form>
</body>
<script>var btn = document.getElementsByTagName("button")[0];var ipt = document.getElementsByTagName("input");btn.onclick = function () {console.log(ipt[0].value)console.log(ipt[1].value)}// 如果字段多, 获取字段值很麻烦,且 数据回显
</script></html>

核心指令

<标签控件 v-model="变量" />

单选框、密码框、多行文本框

<input type="text" v-model="变量" /><input type="password" v-model="变量" /><textarea v-model="变量"></textarea>

单选

变量获取到的数据就是控件的value值,如果变量绑定的数据和控件的value值⼀致,则 该单选控件 被选中。

<input type="radio" v-model="变量" value="值1" />
<input type="radio" v-model="变量" value="值2" />
<input type="radio" v-model="变量" value="值3" />data:{变量:值2 // 值2的控件将会被选中
}

多选

<input type="checkbox" v-model="变量" value="值1" />
<input type="checkbox" v-model="变量" value="值2" />
<input type="checkbox" v-model="变量" value="值3" />data:{变量:[值1] // 绑定的变量是⼀个数组! 值1的控件将会选中
}

勾选

<input type="checkbox" v-model="变量" />data:{变量:布尔值
}

下拉列表(每个option标签都要有value值)

<select v-model="变量"><option value="值1">111</option><option value="值2">222</option><option value="值3">333</option>
</select>data:{变量:值2 // 值2的option控件被选中
}

组件汇总案例

运行截图

代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>02、Vue表单</title><script src="./vue.js"></script>
</head><body><div id="app"><p>姓名:<input type="text" v-model="userinfo.username">{{userinfo.username}}</p><p>密码:<input type="password" v-model="userinfo.password">{{userinfo.password}}</p><p>性别:<!-- 作为单选控件的时候,需要给每个控件一个 value值! --><label><input type="radio" value="1" v-model="userinfo.sex">男</label><label><input type="radio" value="0" v-model="userinfo.sex">女</label>{{userinfo.sex}}</p><p>爱好:<!-- 作多选的时候,每个多选控件,也需要有value值,作为提交的数据  --><label><input type="checkbox" value="lq" v-model="userinfo.ah">篮球</label><label><input type="checkbox" value="zq" v-model="userinfo.ah">足球</label><label><input type="checkbox" value="ymq" v-model="userinfo.ah">羽毛球</label><label><input type="checkbox" value="pq" v-model="userinfo.ah">皮球</label>{{userinfo.ah}}</p><p>是否同意协议:<!-- 作勾选的时候,绑定的变量只需要是一个布尔值即可! --><label><input type="checkbox" v-model="userinfo.agree">xxxxx协议内容,是否同意</label>{{userinfo.agree}}</p><p>家乡:<!-- 多选,每个option都绑定上一个value --><select v-model="userinfo.city"><option value="">==请选择==</option><option value="zhengzhou">郑州</option><option value="nanying">南阳</option><option value="anyang">安阳</option><option value="xinyang">信阳</option><option value="luoyang">洛阳</option></select>{{userinfo.city}}</p><p>留言:<textarea v-model="userinfo.note"></textarea>{{userinfo.note}}</p><button @click="reg">提交</button></div>
</body>
<script>// 核心指令内容: v-model    // vue.js 受欢迎的原因就在于表单的双向数据绑定!new Vue({el: "#app",data: {userinfo: {username: "1",password: "2",sex: 1,   // 1 男  0  女ah: ['zq', 'pq'],   // 如果多选的话,绑定需要是一个数组agree: false,city: "",note: ""}},methods: {reg() {console.log("要去注册了")console.log(this.userinfo)}}})// 获取表单数据 变得简单了!// 从表单获取数据---赋值--->userinfo.username
</script></html>

ToDoList案例

JS堆栈内存图

  1. 基本数据类型  字符串、数字、布尔值、null、undefined   栈内存
  2. 引用数据类型  object/array           堆内存

运行截图

代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>03、ToDoList</title><script src="vue.js"></script><style>#app {text-align: center;}.form {background-color: orange;padding: 20px;display: inline-block;border-radius: 5px;}.table,td,th {border: 1px solid orange;width: 900px;margin: 30px auto;}td,th {padding: 5px;}.bg {background-color: orange;color: #fff;}</style>
</head><body><div id="app"><div class="form">主题:<input type="text" v-model="item.title">地点:<input type="text" v-model="item.pos">时间:<input type="date" v-model="item.time"><button @click="submitAdd" v-if="act=='add'">提交</button><button @click="submitEdit" v-if="act=='edit'">修改</button></div><table class="table"><tr class="top"><th>序号</th><th>主题</th><th>地点</th><th>时间</th><th>状态</th><th>操作</th></tr><template v-if="list.length"><!-- v-if、v-for 不能同时在一个标签内。 template : 辅助功能,无渲染效果。 --><tr v-for="(val, idx) in list" :class="val.status ? 'bg':'' "><td>{{idx+1}}</td><td>{{val.title}}</td><td>{{val.pos}}</td><td>{{val.time}}</td><td>{{val.status ? '完成':'未完成'}}</td><td><button @click="finish(val)" v-if="val.status==0">完成</button><button @click="edit(val, idx)">修改</button><button @click="del(idx)">删除</button></td></tr></template><tr v-else><td colspan="6"><br>暂无数据<br><br></td></tr></table></div>
</body><script>new Vue({el: "#app",data: {list: [],item: {title: "",pos: "",time: "",status: 0   // 0表示 未完成 ; 1表示已完成},act: "add",    // 提交的类型!editIdx: "",   // 修改的下标},methods: {submitAdd() {  // 添加提交if (this.item.title && this.item.pos && this.item.time) {// 将数据放入到list中// 拷贝一份和this.item完全一致的数据,放进去// Object.assign(对象A,对象B)  将对象B合并到对象A里面去。拷贝this.list.push(Object.assign({}, this.item))// 数据还原!this.item.title = this.item.pos = this.item.time = ""this.item.status = 0;} else {alert("请输入完整数据!")}},submitEdit() {  // 修改提交if (this.item.title && this.item.pos && this.item.time) {let newdata = Object.assign({}, this.item);// 找修改的那个下标,将新的数据替换了!console.log(this.editIdx)this.list[this.editIdx] = newdata;// 数据还原!this.item.title = this.item.pos = this.item.time = ""this.item.status = 0;this.act = "add"this.editIdx = ""} else {alert("请输入完整数据!")}},finish(v) {v.status = 1;},edit(v, i) {console.log(v)console.log(i)this.editIdx = i;  // 将下标放在data里面的editIdx变量!this.act = "edit"this.item = Object.assign({}, v);  // 数据回显!},del(i) {this.list.splice(i, 1) // 删除数据}}})/   引用数据类型的特点   //var aa = 20;var bb = aa;bb += 20;console.log(aa)  // 20console.log(bb)  // 40var p1 = {name: "张飞",age: 20}var p2 = p1; // 引用地址p2.age += 10;console.log(p1.age)   //  30console.log(p2.age)   //  30// JS// 基本数据类型  字符串、数字、布尔值、null、undefined   栈内存// 引用数据类型  object/array           堆内存
</script></html>

2、计算属性(对data中的数据进行加工处理)

实现

计算属性的值为函数,且这个函数需要返回值!

将数据处理好之后,赋给全局变量,再进行显示。

new Vue({el: "",data: {},computed: {属性名: function(){return xxx;}}
})

computed-计算属性案例

运行截图

代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>04、计算属性</title><script src="./vue.js"></script>
</head><body><div id="app">{{abc}}<br>{{money}}<hr>{{"¥"+num}}</div>
</body>
<script>// 计算属性// 计算     属性  // 动词     名词   语文角度// 计算属性本质是属性! 只不过需要计算得到!let vm = new Vue({el: "#app",data: {msg: "你好",age: 20,num: 2000},computed: {abc: function () {  // 值是一个函数,且这个函数有return返回值内容!return this.msg + this.age},money: function () {return "¥" + this.num}}})console.log(vm)
</script></html>

3、watch监听(监听data中数据变化)

实现

new Vue({el: "",data: {变量名:值},watch: {// 浅监听: 监听的变量数据类型是基本数据类型变量名: function(新值){....}// 深监听: 监听的变量数据类型是引⽤数据类型变量名: {deep: true,handler: function(新值){...}}}
})

案例

运行截图

代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>05、watch使用</title><script src="./vue.js"></script>
</head><body><div id="app"><span>单价是:¥10.00</span><span>数量是:{{num}}</span><!-- <span>小计:¥{{ num*10 }}</span> --><span>小计:¥{{ total }}</span><button @click="add">累加</button><hr>{{person}}</div>
</body>
<script>// 需要一个监听者,监听某个数据的变化!new Vue({el: "#app",data: {num: 1,total: "10.00",person: {name: "张飞",age: 20}},methods: {add() {this.num++  // 数量变化!this.person.age++  // 年纪也变化!}},watch: {// 浅监听// 只要num发生变化,此函数将自动执行num: function (newval) { // 形参newnalconsole.log(newval)this.total = newval * 10},// 深监听-->对象// 无法检测变化的,因为引用地址没有变化!// person:function(newval){//     console.log(newval)// }person: {deep: true,handler: function (newval) {console.log(newval)}}}})// 监听分类两种:// 浅监听:  监听的是基本数据类型!// 深监听:  监听的是引用数据类型!
</script></html>

多谢观看~

Vue.js-Day02-AM【Vue表单、核心指令(单选框、密码框、多行文本框、单选、多选、勾选、下拉列表)、组件汇总案例、ToDoList案例、计算属性(computed)、watch监听】相关推荐

  1. Vue的计算属性computed和监听属性watch

    Vue的计算属性computed 定义 通过已有属性计算生成一个新的组合属性. 原理 底层借助了Object.defineproperty方法提供的getter和setter来实现. 性质 计算属性的 ...

  2. vue计算属性computed与监听属性watch的基本使用

    目录 Vue.js 计算属性 Vue.js 监听属性 Vue.js 计算属性 计算属性关键词: computed. 计算属性在处理一些复杂逻辑时是很有用的. 反转字符串的示例 <!DOCTYPE ...

  3. class07:表单、计算属性、watch监听

    这里写目录标题 一.表单 1. 表单输入绑定 二.配置对象 1. 计算属性 2. computed 和 methods 的区别 3. watch监听 a. 单一属性监听 b. 监听对象中的属性 c. ...

  4. 【15】Vue:02-Vue表单基本操作、表单修饰符、自定义指令、计算属性computed、侦听器watch、过滤器、生命周期、数组变异方法、替换数组、动态数组响应数据、图书列表案例、TODOS案例

    文章目录 day02 Vue常用特性 表单基本操作 表单修饰符 自定义指令 Vue.directive 注册全局指令 Vue.directive 注册全局指令 带参数 自定义指令局部指令 计算属性 c ...

  5. vue笔记(二)Vue-class与style、事件、计算属性、数据监听、指令+自定义指令、过滤器

    vue官网 一 .class.style操作 二.事件 三.计算属性 四.数据监听.观测 五.指令+自定义指令 六.过滤器 一 .class.style操作 官网 1. class使用: (1)v-b ...

  6. vue计算属性computed和侦听属性watch的用法和区别

    计算属性computed是基于响应式进行缓存,所以在执行的时候效率高,且只执行一次,从缓存读取,除非data里面的数据有更改才重新调用.注意:计算属性里面必须要ruturn,否则无法拿到结果.计算属性 ...

  7. 关于element form表单的验证错误提示信息位置没有出现在文本框下的问题

    今天带我的大佬碰到一个有意思的坑,现象如图,错误提示没有在文本框下,而是出现在最左边的文字下. 原因:el-form 没有加上 label-width,默认宽度为0,导致验证错误的提示信息直接出现在了 ...

  8. js/jquery获取文本框的值与改变文本框的值

    我们就用它来学习获取文本框的值及改变文本框的值. 代码如下 复制代码 <script> function get1() { document.getElementById("tx ...

  9. vue与C#实现自定义表单审批流程构建-前端

    vue与C#实现自定义表单审批流程构建 做信息化项目相信绝大部分人都接触过单据审批流程的需求,例如发起一个采购申请,需要几个节点审核,部门负责人审核,采购审核,财务审核等等.审批人也需要可自定义,以及 ...

最新文章

  1. 从来都没有爱情发生的人生
  2. windbg-.process切换进程
  3. LeetCode 406 Queue Reconstruction by Height
  4. 设置Eclipse RCP程序的外观和首选项
  5. SAP Spartacus Component-wrapper.directive.ts launch Component的三个参数
  6. 网络编程之 传输层的协议TCP与UDP
  7. 谈谈JVM内部锁升级过程
  8. java 的function_Function方法-java
  9. Java判断奇数偶数-高效率
  10. File类里的静态字段
  11. 《强化学习》-读书笔记-第三章 有限马尔科夫决策过程
  12. 方舟建筑代码指令大全
  13. linux下搜狗输入法wps无法使用,搜狗输入法能在WPS下使用,但其他地方不能输入...
  14. 飞鹅云打印机api接口asp版,asp源码对接飞鹅云小票打印机
  15. linux外接HDMI显示器 不能正常显示的问题
  16. Python数据分析与机器学习47-维基百科词条EDA
  17. App Store风靡!当下热门应用商店简析
  18. VS2019调试功能学习
  19. R语言_R中的帮助函数
  20. 关于解决SpringBoot中使用redirect重定向后,页面跳转后ulr地址后面出现jsessionid=xxxxxxx的问题

热门文章

  1. linux mysql 客户端编码设置_Windows、Linux系统下mysql编码设置方法_MySQL
  2. vue访问完整外部链接数据_【Excel小技巧】链接外部数据的五个方法
  3. android 网络图片查看器,Handler的用法
  4. CVPR 2022 | 华南理工提出VISTA:双跨视角空间注意力机制实现3D目标检测SOTA
  5. 推荐一个C++练手项目,面试也可用
  6. 深入解读首个万亿级语言模型Switch Transformer
  7. 直播预告 | 亚马逊高级应用科学家熊元骏:人类行为理解研究进展
  8. 在指定文件夹下打开Jupyter Notebook
  9. java8 lambda判断_Java8新特性-Lambda表达式
  10. 【计算机是如何通信 四】Web服务器/Severlet/DispatcherServlet/Controller