1. vue实例成员:
  2. el | template
  3. |data | methods
  4. watch 监听事件| computed 计数属性使用
  5. | filters过滤器 | props 父传子
  6. components渲染template中标签

一、表单指令(重要):

表单指令 v-model='变量',变量值与表单标签的value相关

v-model可以实现数据的双向绑定:v-model绑定的变量值可以影响表单标签的值,

反过表单标签的值也可以影响变量的值。

  1. <div id="app">
  2. <form action="">
  3. <input type="text" name="user" id="user" placeholder="请输入账号" v-model="v1">
  4. <input type="text" v-model="v1">
  5. {{v1}}
  6. <hr>
  7. <!--单选框-->
  8. 男:<input type="radio" name="sex" value="male" v-model="v2">
  9. 女:<input type="radio" name="sex" value="female" v-model="v2">
  10. {{v2}}
  11. <hr>
  12. <!--单一复选框-->
  13. 卖身契:同意 <input type="checkbox" name="agree" v-model="v3">
  14. {{v3}}
  15. <hr>
  16. <!--多复选框-->
  17. 爱好:<br>
  18. 男:<input type="checkbox" name="hobbies" value="male" v-model="v4">
  19. 女:<input type="checkbox" name="hobbies" value="female" v-model="v4">
  20. 其他:<input type="checkbox" name="hobbies" value="other" v-model="v4">
  21. {{v4}}
  22. </form>
  23. </div>
  1. <script src="js/vue.js"></script>
  2. <script>
  3. new Vue({
  4. el: '#app',
  5. data:{
  6. v1:123,
  7. v2:'female',
  8. v3:false,
  9. v4:['other']
  10. },
  11. })

二、条件指令

条件指令:

​ v-show='变量',隐藏的时候,采用的是display:none进行渲染

​ v-if='布尔变量',隐藏时,不再页面中渲染(保证不渲染的数据泄露)

​ 三种形式:v-if | v-else-if | v-else

利用一个点击转换并且点击的按钮高亮的例子来渲染条件指令

  1. <style>
  2. [v-cloak] {display: none}
  3. .box{
  4. width: 200px;
  5. height: 200px;
  6. }
  7. .r{
  8. background-color: red;
  9. }
  10. .b{
  11. background-color: blue;
  12. }
  13. .g{
  14. background-color: green;
  15. }
  16. .active{
  17. background-color: sandybrown;
  18. }
  19. </style>
  1. <div id="app" v-cloak>
  2. <div class="box r" v-show="is_show"> </div>
  3. <div class="box b" v-if="is_show"> </div>
  4. <div class="warp">
  5. <div>
  6. <button @click="page='r_page'" :class="{active:page==='r_page'}"></button>
  7. <button @click="page='b_page'" :class="{active:page==='b_page'}"></button>
  8. <button @click="page='g_page'" :class="{active:page==='g_page'}">绿</button>
  9. </div>
  10. <div class="box r" v-if="page==='r_page'"></div>
  11. <div class="box b" v-else-if="page==='b_page'"></div>
  12. <div class="box g" v-else></div>
  13. </div>
  14. </div>
  1. <script src="js/vue.js"></script>
  2. <script>
  3. new Vue({
  4. el:'#app',
  5. data:{
  6. is_show:false,
  7. page:'r_page'
  8. }
  9. })

三、循环指令

循环指令:v-for="ele in string|array|obj"

  1. <div id="app">
  2. <span>{{info}}</span>
  3. <hr>
  4. <!--对字符串循环-->
  5. <p v-for="(c,i) in info">{{i}}:{{c}}</p>
  6. <hr>
  7. <!--对数组循环-->
  8. <div v-for=" e in stus">{{e}}</div>
  9. <div v-for="(e,i) in stus ">{{i}}:{{e}}</div>
  10. <hr>
  11. <!--对对象也就是字典循环-->
  12. <!--这里v是值,i是变量,z是索引值-->
  13. <div v-for="(v,i,z) in people">{{v}}{{i}}{{z}}</div>
  14. <div v-for="teat in teats">
  15. <span v-for="(v,k,i) in teat "><span v-if="i !==0">|</span>{{k}}{{v}}</span>
  16. </div>
  17. </div>
  1. <script src="js/vue.js"></script>
  2. <script>
  3. new Vue({
  4. el:'#app',
  5. data:{
  6. info:'good good study',
  7. stus:['A','B','C'],
  8. people:{
  9. name:'猴子',
  10. age:37,
  11. sex:'女',
  12. },
  13. teats:[
  14. {
  15. name: 'jason',
  16. age: 73,
  17. sex: '男',
  18. },
  19. {
  20. name: 'egon',
  21. age: 74,
  22. sex: '男',
  23. },
  24. {
  25. name: 'owen',
  26. age: 17.5,
  27. sex: '男',
  28. }
  29. ]
  30. }
  31. })
  32. </script>

循环留言板案例:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. li:hover{
  8. color: red;
  9. cursor: pointer;
  10. }
  11. </style>
  12. </head>
  13. <body>
  14. <div id="app">
  15. <input type="text" v-model="comment">
  16. <button type="button" @click="send_msg">留言</button>
  17. <ul>
  18. <!--删除事件-->
  19. <li v-for="(msg,i) in msgs" @click="delete_msg(i)">{{msg}}</li>
  20. </ul>
  21. </div>
  22. </body>
  23. <script src="js/vue.js"></script>
  24. <script>
  25. new Vue({
  26. el: '#app',
  27. data: {
  28. comment: '',
  29. //localStorage前端的存储,下面的式子是个三元表达式
  30. //意思是如果有数据就用json转一下存起来,没有值就是空
  31. msgs: localStorage.msgs ? JSON.parse(localStorage.msgs) : [],
  32. },
  33. methods: {
  34. send_msg() {
  35. //将comment添加到msgs数组中:unshift push首尾增加;shift pop首尾删
  36. //this.msgs.push(this.comment);
  37. //数组操作最全的方法:splice(begin_index,count,...args)
  38. //this.msgs.splice(0,2);
  39. if (!this.comment) {
  40. return false;
  41. }
  42. this.msgs.push(this.comment);
  43. this.comment = '';
  44. localStorage.msgs = JSON.stringify(this.msgs);
  45. },
  46. //删除数据
  47. delete_msg(index){
  48. //splice是从什么地方开始操作多少位操作什么!
  49. //下面的意思从index开始,操作一位,操作的值为空,也就是什么都没有
  50. this.msgs.splice(index,1);
  51. localStorage.msgs=JSON.stringify(this.msgs);
  52. }
  53. }
  54. })
  55. </script>
  56. </html>

四、过滤器

  1. <div id="app">
  2. <p>{{ num | f1 }}</p>
  3. <p>{{ a, b | f2(30, 40) | f3 }}</p>
  4. </div>
  1. <script src="js/vue.js"></script>
  2. <script>
  3. new Vue({
  4. el: '#app',
  5. data: {
  6. num: 10,
  7. a: 10,
  8. b: 20,
  9. },
  10. filters: {
  11. // 传入所有要过滤的条件,返回值就是过滤的结果
  12. f1 (num) {
  13. console.log(num);
  14. return num * 10;
  15. },
  16. f2 (a, b, c, d) {
  17. console.log(a, b, c, d);
  18. return a + b + c + d;
  19. },
  20. f3 (num) {
  21. return num * num;
  22. }
  23. }
  24. })
  25. </script>

总结:1、在filters成员中定义过滤器方法;2、可以对多个值进行过滤,过滤时还可以额外传输辅助参数;3、过滤的结果可以再进行下一次过滤(过滤串联)

五、计数属性

  1. <div id="app">
  2. <input type="number" min="0" max="100" v-model="n1">
  3. +
  4. <input type="number" min="0" max="100" v-model="n2">
  5. =
  6. <button>{{ result }}</button>
  7. </div>
  1. <script src="js/vue.js"></script>
  2. <script>
  3. new Vue({
  4. el: '#app',
  5. data: {
  6. n1: '',
  7. n2: '',
  8. // result: 0,
  9. },
  10. computed: {
  11. result () {
  12. console.log('被调用了');
  13. n1 = +this.n1;
  14. n2 = +this.n2;
  15. //this前面加个+号,是将字符串类型转换成数字类型加减乘除
  16. return n1 + n2;
  17. }
  18. }
  19. })
  20. </script>

总结:

1、computed计数属性可以声明方法属性(方法属性一定不能在data中重复声明)

2、方法 属性必须在页面中渲染,才会启用绑定的方法,方法属性的值就是绑定方法的返回值

3、绑定的方法中出现的所有变量都会被监听,任何一个变化发生值更新都会重新出发绑定方法,从而更新方法属性值

一般用来解决的问题:一个变量值依赖于多个变量

六、监听属性

  1. <div id="app">
  2. <p>姓名:<input type="text" v-model="full_name"></p>
  3. <p>姓:{{ first_name }}</p>
  4. <p>名:{{ last_name }}</p>
  5. </div>
  1. <script src="js/vue.js"></script>
  2. <script>
  3. new Vue({
  4. el: '#app',
  5. data: {
  6. full_name: '',
  7. first_name: '未知',
  8. last_name: '未知',
  9. },
  10. watch: {
  11. // n是监听的属性当前值,o是其上一次的值,监听的属性值每次更新都会回调监听方法
  12. full_name(n, o) {
  13. name_arr = n.split('');
  14. this.first_name = name_arr[0];
  15. this.last_name = name_arr[1];
  16. },
  17. }
  18. })
  19. </script>

总结:

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

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

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

解决的问题:多个变量值依赖于一个变量值

Vue-指令补充、过滤器、计数器属性、监听属性的更多相关文章

  1. Vue ---- 表单指令 条件指令 循环指令 分隔符 过滤器 计算属性 监听属性

    目录 案例讲解: 一. 表单指令 1.重点: 补充 2.单选框 3.单一复选框 4.多复选框 二 . 条件指令 v-if/v-show ... v-clock 三 . 循环指令 string arra ...

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

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

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

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

  4. 9.Vue.js 监听属性

    本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化. 以下实例通过使用 watch 实现计数器: <div id = "app&q ...

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

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

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

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

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

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

  8. Vue监听属性的变化

    监听属性的变化watch: { counter: function (nval, oval) { alert('计数器值的变化 :' + oval + ' 变为 ' + nval + '!') }}

  9. 009——VUE中watch监听属性变化实现类百度搜索栏功能

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

随机推荐

  1. NPM安装过程中的一些问题与解决

    1. 安装 vue-cli3后提示 : Package require os(darwin) not compatible with your platform(win32). 上面是因为安装 npm ...

  2. 洛谷P1603 斯诺登的密码(水题

    不知道什么时候打开的,随手做掉了,没什么用...大概又熟悉了一下map吧...大概........一开始还因为没读清题没把非正规的英文表示数字存进去wa了...orz最近状态不行 题目描述 题目描述 ...

  3. matplotlib库绘制条形图

    练习一:假设你获取到了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据? a = ["战狼2","速度与激情8" ...

  4. Swoft2.x 小白学习笔记 (一) ---控制器

    Swoft通过官方文档进行学习,这里不做介绍,直接上手. 涉及到Swoft方面:(配置.注意的坑) 1.控制器(路由.验证器.中间件) 2.mysql  (Model使用).Redis配置及通用池 3 ...

  5. Win32汇编-编写PE结构解析工具

    汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地 ...

  6. Codeforces 1236A. Stones

    传送门 注意到两种操作都要消耗中间的石头,并且两种操作每次都会得到 $3$ 个石头 那么显然优先做操作二是最优的,因为操作二只会消耗中间堆的一个石头 如果有剩下再进行操作 $1$ ,那么可以保证总操作 ...

  7. 牛客 109 C 操作数 (组合数学)

    给定长度为n的数组a,定义一次操作为:1. 算出长度为n的数组s,使得si= (a[1] + a[2] + ... + a[i]) mod 1,000,000,007:2. 执行a = s:现在问k次 ...

  8. DevOps 之 Jenkins 安装、配置、美化、插件及常见错误处理

    继续上一篇的话题,既然已经搭建了 GitLab 的代码仓库,那么现在就可以开始进行下一步持续集成环境的搭建了.公司准备利用 Jenkins CI 进行持续集成,本文记录了 Jenkins 的安装.基础 ...

  9. 作业6:Java虚拟机类加载机制

    一.概述 1.定义 虚拟机类加载机制:把类的数据从Class文件加载进内存,并对数据作校验.转换解析和初始化,最终形成可被JVM直接使用的Java类型. 2.与C/C++的不同 Java不在编译时进行 ...

  10. Sql Server--如何自动备份数据

    下面我来讲一下如何通过维护计划来实现完整备份+差异备份: (1)在SSMS的对象资源管理器中右击“维护计划”,选择“维护计划向导”,系统将弹出向导窗口,如图: 这里向导已经告诉我们维护计划到底能够干什 ...