案例讲解:

  1. # 有一个200x200矩形框wrap,点击wrap本身,记录点击次数,如果是1次wrap为pink色,2次wrap为green色,3次wrap为cyan色,4次重新回到pink色,依次类推
  1. <div class="wrap" @click="actionFn" :style="{backgroundColor: bgColor}">{{ count }}</div>
  1. methods: {
  2. actionFn() {
  3. this.count ++;
  4. this.bgColor = this.colorArr[this.count % 3]
  5. // 0 % 3 余 0
  6. // 1 % 3 余 1 ....
  7. }
  8. }

一. 表单指令

1.重点:

  1. <!--v-model='变量' 可以完成双向绑定-->
  2. <!--变量值与表单标签的value相关-->
  3. <input type="text" name="user" placeholder="输入账号" v-model="v1">
  4. <input type="text" name="password" placeholder="输入密码" v-model="v1">
  5. <!--v-model绑定的变量值可以影响到表单标签的值 反过来表单标签的值也可以影响变量的值-->

补充

  1. <!--数字之间的加减 例如字符串和num 可以在字符串前加上+即可转换成num-->

2.单选框

  1. 男:<input type="radio" name="sex" value="male" v-model="v2">
  2. 女:<input type="radio" name="sex" value="female" v-model="v2">
  3. {{ v2 }} <!--v2的值是单选框的value-->

3.单一复选框

  1. 是否同意:同意 <input type="checkbox" name="agree" v-model="v3">
  2. {{ v3 }} <!--v3拿到的是布尔值 -->

4.多复选框

  1. 爱好:<br>
  2. 男:<input type="checkbox" name="hobbies" value="male" v-model="v4">
  3. 女:<input type="checkbox" name="hobbies" value="female" v-model="v4">
  4. 哇塞:<input type="checkbox" name="hobbies" value="other" v-model="v4">
  5. {{ v4 }} <!--拿到的是一个数组 [ "male", "female" ] -->
  6. <!--但是你必须给个数组-->
  1. data: {
  2. v1: '123', // v-model
  3. v2: 'male', // 单选框
  4. v3: false, // 单一复选框
  5. v4: ['male', 'female'] // 复选框
  6. }

二 . 条件指令

v-if/v-show ...

v-show='布尔值' v-if='布尔值'

  1. v-if | v-else-if | v-else

v-showv-if之间的区别:

  1. // v-show='布尔值' 隐藏时:采用display:none进行渲染
  2. // v-if='布尔值' 隐藏时:不在页面中渲染(保证不渲染的数据泄露)
  1. <div class="box r" v-if="page === 'r_page'"></div>
  2. <div class="box b" v-else-if="page === 'b_page'"></div>
  3. <div class="box g" v-else></div>
  4. <!--不成立就不会渲染!!-->

v-clock

  1. # 当网络较慢,网页还在加载 Vue.js ,而导致 Vue 来不及渲染,这时页面就会显示出 Vue 源代码。我们可以使用 v-cloak 指令来解决这一问题。

js不变,在 div中加入 v-cloak 指令

  1. <div id="app" v-cloak>
  2. {{context}}
  3. </div>
  1. [v-cloak]{
  2. display: none;
  3. }

三 . 循环指令

  1. <!--循环指令:v-for="ele in string|array|obj" -->

string

  1. <i v-for="c in string">{{ c }} </i> <!--string 现在为字符串 我们可以直接拿到 {{ c }}-->
  1. <i v-for="(c, i) in string">{{i}}:{{c}</i> <!--c 为值 i 为索引-->

arrag

  1. <div v-for="e in arrag">{{ e }}</div>
  1. <div v-for="(e, i) in arrag">{{ i }}:{{ e }}</div> <!--e 为值 i 为索引-->

obj

  1. <div v-for="v in obj">{{ v }}</div> <!--v 为值-->
  1. <div v-for="(v, k, i) in people">{{ i }} - {{ k }}:{{ v }}</div>
  2. <!--v 为值--> <!--k 为键--> <!--i 为索引-->
  1. <!--v-for中需要给循环的组件或者标签中建立 :key= 完成缓存的建立-->

循环指令案例(splice):

  1. <input type="text" v-model="comment">
  2. <button type="button" @click="send_msg">留言</button>
  3. <ul>
  4. <li v-for="(msg, i) in msgs" @click="delete_msg(i)">{{ msg }}</li>
  5. </ul>
  1. data: {
  2. comment: '',
  3. msgs: localStorage.msgs ? JSON.parse(localStorage.msgs) : [],
  4. },
  5. methods: {
  6. send_msg() {
  7. // 将comment添加到msgs数组中:unshift push 首尾增 | shift pop 首尾删
  8. // this.msgs.push(this.comment);
  9. // 数组操作最全方法:splice(begin_index, count, ...args)
  10. // 从第0位开始 操作2位 操作内容为 args
  11. // this.msgs.splice(0, 2);
  12. if (!this.comment) {
  13. alert('请输入内容');
  14. return false;
  15. }
  16. this.msgs.push(this.comment);
  17. this.comment = '';
  18. localStorage.msgs = JSON.stringify(this.msgs);
  19. },
  20. delete_msg(index) {
  21. this.msgs.splice(index, 1);
  22. localStorage.msgs = JSON.stringify(this.msgs);
  23. }
  24. }

四 . localstorage and sessionstorage

  1. // 前台数据库
  2. // localStorage: 永久存储
  3. // sessionStorage:临时存储(所属页面标签被关闭后,清空)
  4. // 存
  5. // localStorage.n1 = 10;
  6. // sessionStorage.n2 = 20;
  7. // 取
  8. // localStorage.n1
  9. // sessionStorage.n2
  10. // 数组等类型需要先序列化成JSON
  11. // localStorage.arr = JSON.stringify([1, 2, 3]);
  12. // JSON.parse(localStorage.arr)
  13. // 清空数据库
  14. // localStorage.clear();

五.分隔符(了解)

  1. delimiters: ['[{', '}]'], // 修改插值表达式符号
  1. <div id="app">
  2. {{ msg }}
  3. [{ msg }] <!--修改过后的-->
  4. </div>

六.过滤器

1.在filters成员中定义过滤器方法

  1. <p>{{ num | f1 }}</p>
  1. filters:{
  2. // 传入所有要过滤的条件,返回值就是过滤的结果
  3. f1 (num) {
  4. return num * 10;
  5. },
  6. }

2.可以对多个值进行过滤,过滤时还可以额外传入辅助参数

  1. <p>{{num , num2 | f2 }}</p>
  1. filters:{
  2. // 传入所有要过滤的条件,返回值就是过滤的结果
  3. f2(num, num2){ // 接受两个参数
  4. return num * num2
  5. },
  6. }

3.过滤的结果可以进行下一次过滤(过滤的串联)

  1. <p>{{ num , num2 | f2 | f3 }}</p>
  1. filters:{
  2. f3(num){
  3. return num * 3
  4. },
  5. }

7.计算属性

  1. 1computed计算属性可以声明 方法属性(方法属性一定不能在data中重复声明)
  1. 2、方法属性 必须在页面中渲染,才会启用绑定的方法,方法属性的值就是绑定方法的返回值
  1. 3、绑定的方法中出现的所有变量都会被监听,任何一个变化发生值更新都会重新出发绑定方法,从而更新方法属性的值

案例:

  1. <input type="text" value="" v-model="v1">
  2. <input type="text" value="" v-model="v2">
  3. <p>{{ result }}</p>
  1. computed:{
  2. result(){
  3. this.v1;
  4. this.v2;
  5. return +this.v1 + +this.v2;
  6. }
  7. }
  1. 一般用来解决的问题:一个变量值依赖于多个变量

8.监听属性

1、监听的属性需要在data中声明,监听方法不需要返回值

2、监听的方法名就是监听的属性名,该属性值发生更新时就会回调监听方法

3、监听方法有两个回调参数:当前值,上一次值

案例:

  1. <p>姓名:<input type="text" v-model="full_name"></p>
  2. <p>姓:{{ first_name }}</p>
  3. <p>名:{{ last_name }}</p>
  1. data:{s
  2. full_name:'',
  3. first_name:'',
  4. last_name:''
  5. },
  6. watch:{
  7. full_name(n,i){
  8. console.log(n, i);
  9. name_arr = n.split('');
  10. this.first_name = name_arr[0];
  11. this.last_name = name_arr[1];
  12. }
  13. }
  1. 解决的问题:多个变量值依赖于一个变量值

Vue ---- 表单指令 条件指令 循环指令 分隔符 过滤器 计算属性 监听属性的更多相关文章

  1. vue02 过滤器、计算和侦听属性、vue对象的生命周期、阻止事件冒泡和刷新页面

    3. Vue对象提供的属性功能 3.1 过滤器 过滤器,就是vue允许开发者自定义的文本格式化函数,可以使用在两个地方:输出内容和操作数据中. 定义过滤器的方式有两种. 3.1.1 使用Vue.fil ...

  2. vue(4)—— vue的过滤器,监听属性,生命周期函数,获取DOM元素

    过滤器 vue允许自定义过滤器,我个人认为,过滤器有两种,一种是对数据的清洗过滤,一种是对数据切换的动画过滤 数据切换的动画过滤 这里还是利用前面的动态组件的例子: 这里由于没办法展示动画效果,代码如 ...

  3. vue.js 监听属性的学习/ 千米、米的转换 /时、分、秒 的转换

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  4. 简单vue的监听属性(单位换算)

    单位换算 单位换算可以根据实际情况换 <!DOCTYPE html> <html lang="en"> <head> <meta char ...

  5. vue条件语句、循环语句、计算属性、侦听器监听属性

    因为 v-if 和v-for是一个指令,所以必须将它添加到一个元素上.但是如果想切换多个元素呢?此时可以把一个 <template> 元素当做不可见的包裹元素,并在上面使用 v-if.最终 ...

  6. Vue-指令补充、过滤器、计数器属性、监听属性

    vue实例成员: el | template |data | methods watch 监听事件| computed 计数属性使用 | filters过滤器 | props 父传子 componen ...

  7. Vue 变量,成员,属性监听

    Vue变量 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF ...

  8. Vue.js之计算属性(computed)、属性监听(watch)与方法选项(methods)

    vue.js官网:https://cn.vuejs.org/v2/guide/components-registration.html 一.计算属性-computed 1. 作用:能够避免数据冗余,通 ...

  9. vue中的computed(计算属性)和watch(监听属性)的特点,以及深度监听

    //计算属性是根据data中已有的属性,计算得到一个新的属性, <div>全名:{{fullName}}</div> 创建计算属性通过computed关键字,它是一个对象 计算 ...

随机推荐

  1. 【dp】Bone Collector II

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2639 题意: 01背包第k优解, 背包九讲原题.“ 对于求次优解.第K优解类的问题,如果相应的最优解问 ...

  2. HTML的footer置于页面最底部

    vue项目中,使用element-ui的布局,仍然出现footer不固定页面底部的情况,网上找到的一个管用的 方法是:footer高度固定+绝对定位 <html> <head> ...

  3. python:利用celery分布任务

    Celery是一个功能完备即插即用的任务队列.它使得我们不需要考虑复杂的问题,使用非常简单.celery看起来似乎很庞大.celery适用异步处理问题,当发送邮件.或者文件上传, 图像处理等等一些比较 ...

  4. 微调(Fine-tune)原理

    在自己的数据集上训练一个新的深度学习模型时,一般采取在预训练好的模型上进行微调的方法.什么是微调?这里已VGG16为例进行讲解,下面贴出VGGNet结构示意图. 上面圈出来的是VGG16示意图,也可以 ...

  5. Running serveral https server on a single IP address

    Nginx 在一个IP上配置多个https server时,默认只会发送默认server name的证书.这是由ssl 协议本身行为导致的:先建立ssl connection,后发送http请求.即n ...

  6. [FPGA]Verilog实现JK触发器组成的8421BCD码十进制计数器

    目录 概述 电路分析 代码实现 参考文献 概述 本文以异步时序计数器为例,用Verilog实现以\(JK\)触发器组成的8421BCD码十进制异步计数器,并用ModelSim软件进行仿真验证. 电路分 ...

  7. TypeError: Cannot read property '_t' of undefined (VUE + ElementUI + i18n)

    在使用vue的ElementUI库,在多语言时报错: TypeError: Cannot read property '_t' of undefined 错误是在点菜单栏时随机抛出的,F12抓不到,只 ...

  8. Markdown学习笔记(一)

    解决Markdown文件插入图片无法只能本地查看的问题 原因:图片的显示与图片地址关联,写入Markdown时用的本机地址,一旦上传到网络,地址就发生了变化,也就显示不了图片. 寻找免费的图床网站. ...

  9. 请求库urllib和urllib3

    # coding=utf-8 # urllib """ 使用python的urllib库去模拟浏览器请求网页,常用内容如下: urllib.request 发送HTTP请 ...

  10. [ASP.NET Core 3框架揭秘] 配置[1]:读取配置数据[上篇]

    提到"配置"二字,我想绝大部分.NET开发人员脑海中会立即浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化 ...