经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTML/CSS » CSS » 查看文章
Vue入门常用指令
来源:cnblogs  作者:一生的风景  时间:2020/12/8 8:47:16  对本文有异议

一.Vue 介绍

? Vue (读音 /vju?/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。 另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

二.使用方法

下载到本地引用:

? 开发版: https://cn.vuejs.org/js/vue.js

? 生产版:https://cn.vuejs.org/js/vue.min.js

在线引用:

  1. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

npm安装:

  1. // 最新稳定版
  2. npm install vue
  3. // 安装vue-cli脚手架构建工具
  4. npm install --global vue-cli

官网:https://cn.vuejs.org/

三.vue入门指令

vue实例创建

  1. <body>
  2. <!-- 定义id为app作为 锚点 -->
  3. <p id="app">
  4. <!-- vue 表达式{{}} 两个花括号 ,里面是数据名-->
  5. {{msg}}
  6. </p>
  7. <!-- 引入 vue.js -->
  8. <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
  9. <script type="text/javascript">
  10. // 创建 vue 实例
  11. new Vue({
  12. // el 代表的是 页面中的 id值
  13. el: '#app',
  14. // data 是数据 ,与json数据一样
  15. data: {
  16. msg: "hello vue",
  17. }
  18. })
  19. // 在页面就会显示 hello vue
  20. </script>
  21. </body>

注意:vue 表达式语法是两个花括号{{msg}} 里面写实例中对应的数据名,数据名必须在对应的vue实例之下。

在写实例vue时 要注意 属性和 属性名之间的空格

  • 指令
    1. 本质就是自定义属性
    2. Vue中指令都是以 v- 开头

v-text指令

  1. <body>
  2. <div id="app">
  3. <!-- 在使用 v-text标签时就不需要{{}} 效果等同于{{msg}} -->
  4. <p v-text="msg"></p>
  5. <p>{{msg}}</p>
  6. </div>
  7. <!-- 导入vue.js -->
  8. <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
  9. <script type="text/javascript">
  10. // 在写实例vue时 要注意 属性和 属性名之间的空格
  11. new Vue({
  12. el: '#app',
  13. data: {
  14. msg: "v-text 测试"
  15. }
  16. })
  17. </script>
  18. <!-- 页面效果 打印了两个 v-text 测试-->
  19. </body>

v-html指令

  • 用法和v-text 相似 但是他可以将HTML片段填充到标签中

  • 可能有安全问题, 一般只在可信任内容上使用 v-html永不用在用户提交的内容上

  • 它与v-text区别在于v-text输出的是纯文本,浏览器不会对其再进行html解析,但v-html会将其当html标签解析后输出。

  1. <body>
  2. <div id="app">
  3. <!-- v-html 指令会将标签渲染解析 -->
  4. <p v-html="html"></p>
  5. <!-- 输出:<span>html标签在渲染的时候被源码输出</span> -->
  6. <p v-text="text"></p>
  7. <!-- msg 普通语法 -->
  8. <p>{{msg}}</p>
  9. </div>
  10. <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
  11. <script type="text/javascript">
  12. let app = new Vue({
  13. el: "#app",
  14. data: {
  15. msg: "<span >普通双标签不会解析span标签</span>",
  16. html: "<span>v-html指令可以渲染解析标签</span>",
  17. text: "<span>v-text 不会解析 标签 跟双花括号一样</span>"
  18. }
  19. })
  20. </script>
  21. </body>

v-text 和 v-html相当于原生js中的 .text 和 .html 相同 是一样的性质

v-pre指令

  • 显示原始信息跳过编译过程
  • 跳过这个元素和它的子元素的编译过程。
  • 一些静态的内容不需要编译加这个指令可以加快渲染
  1. <body>
  2. <div id="app">
  3. <!--
  4. 使用v-pre 指令 会跳过vue的编译过程
  5. 所以p标签中的{{msg}} 不会被vue识别编译
  6. 则页面会直接显示 {{msg}}
  7. -->
  8. <p v-pre>{{msg}}</p>
  9. </div>
  10. <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
  11. <script type="text/javascript">
  12. new Vue({
  13. el: "#app",
  14. data: {
  15. msg: "v-pre 指令会使该语法表达式不会被识别"
  16. }
  17. })
  18. </script>
  19. </body>

v-model指令

  • v-model是一个指令,限制在 <input>、<select>、<textarea>、components中使用

  • v-model是一个双向数据绑定指令

双向数据绑定
  • 当数据发生变化的时候,视图也就发生变化
  • 当视图发生变化的时候,数据也会跟着同步变化
  1. <body>
  2. <div id="app">
  3. <span>{{msg}}</span>
  4. <br>
  5. <!--
  6. 在页面测试时 当修改 input 内容,vue实例中的msg值会跟着改变
  7. 上面的span标签中的值 也会跟随 vue实例中数据改变,v-model 双向
  8. 绑定的好处已经很明显了
  9. -->
  10. <input type="text" name="" id="" v-model="msg" />
  11. </div>
  12. <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
  13. <script type="text/javascript">
  14. let app = new Vue({
  15. el: "#app",
  16. data: {
  17. msg: "v-model指令测试"
  18. }
  19. })
  20. </script>
  21. </body>

v-once指令

  1. <body>
  2. <div id="app">
  3. <!--
  4. 使用v-pre 指令 会跳过vue的编译过程
  5. 所以p标签中的{{msg}} 不会被vue识别编译
  6. 则页面会直接显示 {{msg}}
  7. -->
  8. <p v-pre>{{msg}}</p>
  9. </div>
  10. <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
  11. <script type="text/javascript">
  12. new Vue({
  13. el: "#app",
  14. data: {
  15. msg: "v-pre 指令会使该语法表达式不会被识别"
  16. }
  17. })
  18. </script>
  19. </body>

mvvm概念

  • MVC 是后端的分层开发概念; MVVM是前端视图层的概念,主要关注于 视图层分离,也就是说:MVVM把前端的视图层,分为了 三部分 Model, View , VM ViewModel
  • m model
    • 数据层 Vue 中 数据层 都放在 data 里面
  • v view 视图
    • Vue 中 view 即 我们的HTML页面
  • vm (view-model) 控制器 将数据和视图层建立联系
    • vm 即 Vue 的实例 就是 vm

v-on指令

  1. <body>
  2. <div id="app">
  3. <p>{{num}}</p>
  4. <!-- 绑定点击事件 每点击一下,num值++一下 一般不推荐这样操作-->
  5. <button type="button" v-on:click="num++">普通点击</button>
  6. <button type="button" v-on:click="handlel($event)" name="event测试">点击</button>
  7. <button type="button" v-on:click="handlel2(123,222,$event)">带参点击</button>
  8. </div>
  9. <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
  10. <script type="text/javascript">
  11. new Vue({
  12. el: "#app",
  13. data: {
  14. num: 0
  15. },
  16. methods: { // methods 存放调用的方法
  17. handlel: function(event) {
  18. console.log(event.target.innerHTML)
  19. console.log(event.target.name)
  20. },
  21. handlel2: function(p, p1, event) {
  22. console.log(p, p1)
  23. console.log(event.target.innerHTML)
  24. // this的指向为当前vue实例 this.num++ 就是将num的值++
  25. this.num++;
  26. }
  27. }
  28. })
  29. </script>
  30. </body>

拓展:$event 经过对参数的对比,发现 该event传入的是当前标签的对象,我们可以使用该对象获取参数类如获取文本内容 event.target.innerHTML 或者event.target.name

按键修饰符

? 在做项目中有时会用到键盘事件,在监听键盘事件时,我们经常需要检查详细的按键。Vue 允许为 v-on 在监听键盘事件时添加按键修饰符

  1. <body>
  2. <div id="app">
  3. <!-- 当键盘每点击一次时触发事件调用submit方法-->
  4. <input v-on:keyup="submit($event)" value="键盘点击" />
  5. <!-- 指定特定的键盘键值 来调用 只有当点击小写a时才会触发 -->
  6. <input v-on:keyup.65="submit($event)" type="button" value="65" />
  7. <!-- 当鼠标键抬起时触发事件 调用 mouseup 方法 -->
  8. <input v-on:mouseup="mouseup($event)" type="button" value="鼠标点击" />
  9. <!--
  10. 以上 是键盘鼠标事件的演示 ,还可以拓展其他的类似的操作、
  11. 常用的按键修饰符
  12. .enter => enter键
  13. .tab => tab键
  14. .delete (捕获“删除”和“退格”按键) => 删除键
  15. .esc => 取消键
  16. .space => 空格键
  17. .up => 上
  18. .down => 下
  19. .left => 左
  20. .right => 右
  21. -->
  22. </div>
  23. <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
  24. <script type="text/javascript">
  25. new Vue({
  26. el: "#app",
  27. data: {
  28. },
  29. methods: {
  30. submit: function(event) {
  31. console.log(event.target.value);
  32. },
  33. mouseup: function(event) {
  34. console.log(event.target.value);
  35. }
  36. }
  37. })
  38. </script>
  39. </body>

自定义按键别名

  • 在Vue中可以通过config.keyCodes自定义按键修饰符别名
  1. <body>
  2. <div id="app">
  3. <button type="button" v-on:keydown.fn="prompt($event)" value="我是自定义按键">我是自定义按键</button>
  4. </div>
  5. <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
  6. <script type="text/javascript">
  7. // 将 a 的 键值自定义成fn ,然后在控件中直接使用fn 一般情况下不会这样使用
  8. Vue.config.keyCodes.fn = 65;
  9. new Vue({
  10. el: "#app",
  11. methods: {
  12. prompt: function(event) {
  13. alert(event.target.value);
  14. }
  15. }
  16. })
  17. </script>
  18. </body>

keyCode值一览表

虚拟键 十六进制值 十进制值 相应键盘或鼠标键
VK_LBUTTON 01 1 鼠标左键
VK_RBUTTON 02 2 鼠标右键
VK_CANCEL 03 3 Ctrl-Break键
VK_MBUTTON 04 4 鼠标中键
VK_BACK 08 8 Backspace键
VK_TAB 09 9 Tab键
VK_CLEAR 0C 12 Clear键
VK_RETURN 0D 13 Enter键
VK_SHIFT 10 16 Shift键
VK_CONTROL 11 17 Ctrl键
VK_MENU 12 18 Alt键
VK_PAUSE 13 19 Pause键
VK_CAPITAL 14 20 Caps Lock键
VK_ESCAPE 1B 27 Esc键
VK_SPACE 20 32 Space键
VK_PRIOR 21 33 Page Up键
VK_NEXT 22 34 Page Down键
VK_END 23 35 End键
VK_HOME 24 36 Home键
VK_LEFT 25 37 ←键
VK_UP 26 38 ↑键
VK_RIGHT 27 39 →键
VK_DOWN 28 40 ↓键
VK_SELECT 29 41 Select键
VK_PRINT 2A 42 Print键
VK_EXECUTE 2B 43 Execute键
VK_SNAPSHOT 2C 44 Print Screen键
VK_INSERT 2D 45 Ins键
VK_DELETE 2E 46 Del键
VK_HELP 2F 47 Help键
VK_0 0x30 48 0键
VK_1 0x 31 49 1键
VK_2 0x 32 50 2键
VK_3 0x 33 51 3键
VK_4 0x 34 52 4键
VK_5 0x 35 53 5键
VK_6 0x 36 54 6键
VK_7 0x 37 55 7键
VK_8 0x 38 56 8键
VK_9 0x 39 57 9键
VK_A 41 65 A键
VK_B 42 66 B键
VK_C 43 67 C键
VK_D 44 68 D键
VK_E 45 69 E键
VK_F 46 70 F键
VK_G 47 71 G键
VK_H 48 72 H键
VK_I 49 73 I键
VK_J 4A 74 J键
VK_K 4B 75 K键
VK_L 4C 76 L键
VK_M 4D 77 M键
VK_N 4E 78 N键
VK_O 4F 79 O键
VK_P 50 80 P键
VK_Q 51 81 Q键
VK_R 52 82 R键
VK_S 53 83 S键
VK_T 54 84 T键
VK_U 55 85 U键
VK_V 56 86 V键
VK_W 57 87 W键
VK_X 58 88 X键
VK_Y 59 89 Y键
VK_Z 5A 90 Z键
VK_LWIN 5B 91 左Windows键
VK_RWIN 5C 92 右Windows键
VK_APPS 5D 93 应用程序键
VK_SLEEP 5F 95 休眠键
VK_NUMPAD0 60 96 小数字键盘0键
VK_NUMPAD1 61 97 小数字键盘1键
VK_NUMPAD2 62 98 小数字键盘2键
VK_NUMPAD3 63 99 小数字键盘3键
VK_NUMPAD4 64 100 小数字键盘4键
VK_NUMPAD5 65 101 小数字键盘5键
VK_NUMPAD6 66 102 小数字键盘6键
VK_NUMPAD7 67 103 小数字键盘7键
VK_NUMPAD8 68 104 小数字键盘8键
VK_NUMPAD9 69 105 小数字键盘9键
VK_MULTIPLY 6A 106 乘号键
VK_ADD 6B 107 加号键
VK_SEPARATOR 6C 108 分割键
VK_SUBSTRACT 6D 109 减号键
VK_DECIMAL 6E 110 小数点键
VK_DIVIDE 6F 111 除号键
VK_F1 70 112 F1键
VK_F2 71 113 F2键
VK_F3 72 114 F3键
VK_F4 73 115 F4键
VK_F5 74 116 F5键
VK_F6 75 117 F6键
VK_F7 76 118 F7键
VK_F8 77 119 F8键
VK_F9 78 120 F9键
VK_F10 79 121 F10键
VK_F11 7A 122 F11键
VK_F12 7B 123 F12键
VK_F13 7C 124 F13键
VK_F14 7D 125 F14键
VK_F15 7E 126 F15键
VK_F16 7F 127 F16键
VK_F17 80 128 F17键
VK_F18 81 129 F18键
VK_F19 82 130 F19键
VK_F20 83 131 F20键
VK_F21 84 132 F21键
VK_F22 85 133 F22键
VK_F23 86 134 F23键
VK_F24 87 135 F24键
VK_NUMLOCK 90 144 Num Lock键
VK_SCROLL 91 45 Scroll Lock键
VK_LSHIFT A0 160 左Shift键
VK_RSHIFT A1 161 右Shift键
VK_LCONTROL A2 162 左Ctrl键
VK_RCONTROL A3 163 右Ctrl键
VK_LMENU A4 164 左Alt键
VK_RMENU A5 165 右Alt键

v-bind指令

  • v-bind 指令被用来响应地更新 HTML 属性
  1. <style type="text/css">
  2. /* 定义几组样式 */
  3. .p1Color {
  4. color: blue;
  5. }
  6. .p2Color {
  7. color: darkred;
  8. }
  9. .p1Text {
  10. font-size: 18px;
  11. }
  12. .p1Text {
  13. font-size: 10px;
  14. }
  15. </style>
  16. </head>
  17. <body>
  18. <div id="app">
  19. <!-- 绑定 p1Color 并选择isColor isColor定义为true 也可以直接写true-->
  20. <p v-bind:class="{p1Color:isColor}">
  21. 学习 v-bind 指令
  22. </p>
  23. <button v-on:mouseup="changeColor">{{chgColor}}</button>
  24. <p></p>
  25. <p></p>
  26. </div>
  27. <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
  28. <script type="text/javascript">
  29. new Vue({
  30. el: "#app",
  31. data: {
  32. isColor: true,
  33. isText: true,
  34. color: "yellow",
  35. size: "14px",
  36. chgColor: "关闭样式"
  37. },
  38. methods: {
  39. changeColor: function() {
  40. // 点击事件 关闭开启 p标签的样式
  41. if (this.isColor === true) {
  42. this.isColor = false;
  43. this.chgColor = "开启样式"
  44. } else {
  45. this.isColor = true;
  46. this.chgColor = "关闭样式"
  47. }
  48. }
  49. }
  50. })
  51. </script>
  52. </body>
v-bind绑定class
  1. <style type="text/css">
  2. /* 定义几组样式 */
  3. .p1Color {
  4. color: blue;
  5. }
  6. .p2Color {
  7. color: darkred;
  8. }
  9. .p1Text {
  10. font-size: 18px;
  11. }
  12. .p1Text {
  13. font-size: 10px;
  14. }
  15. </style>
  16. </head>
  17. <body>
  18. <div id="app">
  19. <!-- 将 样式 定义在vue实例中,然后 绑定到DOM上 -->
  20. <!-- :class 等同于 v-on:calss -->
  21. <p :class="[colorA,textA]">
  22. 学习 v-bind 指令
  23. </p>
  24. <button v-on:mouseup="changeAColor">{{chgColor}}</button>
  25. <p v-bind:class="[colorB,textB]">
  26. 学习 v-bind 指令绑定 class
  27. </p>
  28. <button v-on:mouseup="changeBColor">{{chgColor}}</button>
  29. <p></p>
  30. </div>
  31. <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
  32. <script type="text/javascript">
  33. new Vue({
  34. el: "#app",
  35. data: {
  36. colorA: "p1Color",
  37. colorB: 'p2Color',
  38. textA: 'p1Text',
  39. textB: 'p2Text',
  40. chgColor: "切换样式"
  41. },
  42. /*定义 两个 方法切换样式 */
  43. methods: {
  44. changeAColor: function() {
  45. if ("p1Color" === this.colorA) {
  46. this.colorA = 'p2Color';
  47. } else {
  48. this.colorA = 'p1Color';
  49. }
  50. },
  51. changeBColor: function() {
  52. if ("p2Color" === this.colorB) {
  53. this.colorB = 'p1Color';
  54. } else {
  55. this.colorB = 'p2Color';
  56. }
  57. }
  58. }
  59. })
  60. </script>
  61. </body>
绑定对象和绑定数组 的区别
  • 绑定对象的时候 对象的属性 即要渲染的类名 对象的属性值对应的是 data 中的数据
  • 绑定数组的时候数组里面存的是data 中的数据
绑定style v-bind:style
  1. <body>
  2. <div id="app">
  3. <!-- :style 等同于 v-bind:style -->
  4. <p :style="{ color:colorB, fontSize:fontSize}">
  5. v-bind:style 样式绑定 内联样式
  6. </p>
  7. <p v-bind:style="[styleB, styleA]">
  8. v-bind:style 样式绑定 数组绑定
  9. </p>
  10. </div>
  11. <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
  12. <script type="text/javascript">
  13. new Vue({
  14. el: "#app",
  15. data: {
  16. /* 在data里面定义几组 样式数据 */
  17. styleObject: {
  18. color: "green",
  19. fontSize: "18px"
  20. },
  21. colorB:"green",
  22. fontSize:"18px",
  23. styleA: {
  24. color: "red"
  25. },
  26. styleB: {
  27. fontSize: "28px"
  28. }
  29. }
  30. })
  31. </script>
  32. </body>

分支循环

v-if指令

  1. <body>
  2. <div id="app">
  3. <!-- 使用v-if 指令来判断flag -->
  4. <p v-if="flag === true">
  5. {{msg}}
  6. </p>
  7. <p v-if="flag === false">
  8. {{msg2}}
  9. </p>
  10. <button type="button" @click="changeClick">点我</button>
  11. </div>
  12. <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
  13. <script type="text/javascript">
  14. new Vue({
  15. el: "#app",
  16. data: {
  17. flag: true, // 设置标志 为true 用于页面判断
  18. msg: "我出来了",
  19. msg2: "我消失了"
  20. },
  21. methods: {
  22. changeClick: function() {
  23. if (this.flag === true) {
  24. this.flag = false;
  25. } else {
  26. this.flag = true;
  27. }
  28. }
  29. }
  30. })
  31. </script>
  32. </body>

v-show指令

  1. <body>
  2. <div id="app">
  3. <p v-show="1===1">v-show判断为true时我显示了</p>
  4. <p v-show="1===2">v-show为flase时我隐藏</p>
  5. <!-- 使用 v-show 指令来判断flag -->
  6. <p v-show="flag === true">
  7. {{msg}}
  8. </p>
  9. <p v-show="flag === false">
  10. {{msg2}}
  11. </p>
  12. <button type="button" @click="changeClick">点我</button>
  13. </div>
  14. <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
  15. <script type="text/javascript">
  16. new Vue({
  17. el: "#app",
  18. data: {
  19. flag: true, // 设置标志 为true 用于页面判断
  20. msg: "我出来了",
  21. msg2: "我消失了"
  22. },
  23. methods: {
  24. changeClick: function() {
  25. if (this.flag === true) {
  26. this.flag = false;
  27. } else {
  28. this.flag = true;
  29. }
  30. }
  31. }
  32. })
  33. </script>
  34. </body>

v-show 和 v-if的区别

  • v-show本质就是标签display设置为none,控制隐藏
    • v-show只编译一次,后面其实就是控制css,而v-if不停的销毁和创建,故v-show性能更好一点。
  • v-if是动态的向DOM树内添加或者删除DOM元素
    • v-if切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件

v-for循环指令

  1. <body>
  2. <div id="app">
  3. <!-- 循环遍历 data中 items 数据 -->
  4. <p v-for="item in items">
  5. <span>id: {{item.id}} </span>
  6. <span>name: {{item.name}} </span>
  7. <span>age: {{item.age}} </span>
  8. <br>
  9. </p>
  10. <!-- 页面中将会循环遍历
  11. id: 1 name: 李四 age: 20
  12. id: 2 name: 王五 age: 19
  13. id: 3 name: 张飞 age: 33
  14. -->
  15. </div>
  16. <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
  17. <script type="text/javascript">
  18. new Vue({
  19. el: "#app",
  20. // 准备 循环模拟数据
  21. data: {
  22. items: [{
  23. id: 1,
  24. name: "李四",
  25. age: 20
  26. },
  27. {
  28. id: 2,
  29. name: "王五",
  30. age: 19
  31. },
  32. {
  33. id: 3,
  34. name: "张飞",
  35. age: 33
  36. },
  37. ]
  38. }
  39. })
  40. </script>
  41. </body>

注意点:

  • 不推荐同时使用 v-ifv-for
  • v-ifv-for 一起使用时,v-for 具有比 v-if 更高的优先级。

"="和""和"="的区别

  1. <body>
  2. <!-- 一个等号 是赋值的意思 主要用于js里面 -->
  3. <div id="app">
  4. <!-- 使用双等时 -->
  5. <p v-if="num == '1' ">我是双等于 双等于 不严谨 普通的数字1可以等于字符串"1"</p>
  6. <!-- 使用三等时 由于strNum定义为字符型1 所以不等于数字型1-->
  7. <p v-if="strNum==='1'">我是双等于 双等于 不严谨 普通的数字1可以等于字符串"1"</p>
  8. <!-- 同样使用于其他类型数据 eg Boolean和string的ture相对比 -->
  9. </div>
  10. <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
  11. <script type="text/javascript">
  12. new Vue({
  13. el: "#app",
  14. data: {
  15. // 定义一个普通的1 一个字符类型的1
  16. num: 1,
  17. strNum: '1'
  18. },
  19. })
  20. </script>
  21. </body>

四.Vue选项卡案例

  1. <body>
  2. <!-- 选项卡主体 -->
  3. <div id="app" class="tableCard">
  4. <div id="" class="tableHead">
  5. <ul>
  6. <!-- 取选项卡数据 遍历标题 -->
  7. <!-- defaultStyle 如果标志id等于遍历id则加上默认样式 -->
  8. <li v-for="title in tableLists" :class="title.id===flagId?'defaultStyle':''">
  9. <!-- 绑定点击事件change 传入对应数据id -->
  10. <span v-on:click='change(title.id)'>{{title.title}}</span>
  11. </li>
  12. </ul>
  13. </div>
  14. <div id="" class="tableBody">
  15. <!-- 取选项卡数据 遍历图片路径 -->
  16. <ul v-for="img in tableLists">
  17. <!-- 数据id等于标志id 则让改图片显现 -->
  18. <li v-if="img.id === flagId">
  19. <img :src="img.path" v-bind:style="showImg">
  20. </li>
  21. <!--不等于的就隐藏 -->
  22. <li v-else>
  23. <img :src="img.path">
  24. </li>
  25. </ul>
  26. </div>
  27. </div>
  28. <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
  29. <!-- vue 实例-->
  30. <script type="text/javascript">
  31. new Vue({
  32. el: "#app",
  33. // 定义图片样式
  34. data: {
  35. flagId: 1,
  36. showImg: "display: block;",
  37. tableLists: [{
  38. id: 1,
  39. title: "选项卡1",
  40. path: "img/3Dbg01.jpg"
  41. }, {
  42. id: 2,
  43. title: "选项卡2",
  44. path: "img/3Dbg02.jpg"
  45. }, {
  46. id: 3,
  47. title: "选项卡3",
  48. path: "img/3Dbg03.jpg"
  49. }, ]
  50. },
  51. methods: {
  52. // 每点击一次修改flagId的值为传入的值
  53. change: function(titleId) {
  54. this.flagId = titleId;
  55. }
  56. }
  57. })
  58. </script>
  59. </body>

参考demo

giteehttps://gitee.com/li_shang_shan/vue-entry-instruction-demo

原文链接:http://www.cnblogs.com/2979100039-qq-con/p/14057243.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号