博客列表 >vue指令演练

vue指令演练

后网络时代
后网络时代原创
2021年01月16日 18:52:55634浏览

将课上提及的vue指令全部上机操作并发

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. .active{
  9. color:cyan;
  10. }
  11. .bigfontsize{
  12. font-size:26px;
  13. }
  14. ul,li{
  15. list-style: none;
  16. }
  17. ul li:nth-of-type(1){
  18. background-color:lightsalmon
  19. }
  20. </style>
  21. </head>
  22. <body>
  23. <div class="test">
  24. <p>{{title}}</p>
  25. <!-- v-text 是由vue实例掌管的自定义属性,称为"指令.作用:相当于 innerText,textContent" -->
  26. <p v-text="vtext"></p>
  27. <p v-once="vtext">v-once让vtext本次不渲染</p>
  28. <!-- v-html 相当于innerHTML -->
  29. <p v-html="vhtml"></p>
  30. <!-- v-bind v-on 指令 -->
  31. <p v-bind:style="style">使用v-bind:style</p>
  32. <!-- v-bind 指令简写为冒号 :;它绑定的属性支持表达式 -->
  33. <p :style="'color:red'">{{vbind}}:style的值:'color:red'</p>
  34. <p :style="`color:red`">{{vbind}}:style的值:`color:red`</p>
  35. <p :style="`${style}`">{{vbind}}:style的值:`${style}`</p>
  36. <!-- 绑定类 -->
  37. <p :class="`active bigfontsize`">{{vbindclass}}:class的值:`active bigfontsize`</p>
  38. <p :class="class1">{{vbindclass}}:class的值:class1是vue中定义的值</p>
  39. <p :class="`active bigfontsize`">{{vbindclass}}:class的值:`active bigfontsize`</p>
  40. <p :class="{active:false,bigfontsize:true}">{{vbindclass}}:class的值:{active:false,bigfontsize:true}</p>
  41. <p :class="{active:boolT,bigfontsize:boolT}">{{vbindclass}}:class的值:{active:boolT,bigfontsize:boolT}</p>
  42. <p :class="[active1,bigfontsize1]">{{vbindclass}}:class的值:[active1,bigfontsize1]</p>
  43. <p :class="[`active`,`${bigfontsize1}`]">{{vbindclass}}:class的值:[`active`,`${bigfontsize1}</p>
  44. <!-- 绑定事件:v-on 简写为@,可以通过prevent来阻止事件的默认行为 -->
  45. <p><a href="3.0.html" v-on:click="show">点击触发事件</a></p>
  46. <p><a href="3.0.html" v-on:click.prevent.once="show">点击触发事件,并阻止默认事件,可以冒泡</a></p>
  47. <p><a href="3.0.html" v-on:click.prevent.stop="show">点击触发事件,并阻止默认事件,阻止冒泡</a></p>
  48. <!-- once只允许vue绑定的事件执行一次,触发以后会清除vue绑定的事件 -->
  49. <p><a href="3.0.html" v-on:click.prevent.stop.once="show">点击触发事件,并阻止默认事件,阻止冒泡,只执行一次</a></p>
  50. <!-- 事件传参,注意vue的事件对象的参数名称只能是$event; -->
  51. <button @click.stop="add($event,100,200)">相加</button>
  52. <!-- 双向绑定 -->
  53. <p>模型{{webjs}}</p>
  54. <p>双向绑定<input type="text" name="input" :value="webjs" @input="webjs=$event.target.value" ></p>
  55. <p>双向绑定简写:<input type="text" name="input" :value="webjs" v-model="webjs" ></p>
  56. <input type="text" name="input" :value="webjs" v-model="webjs" >
  57. <!-- 懒加载 -->
  58. <p>懒加载 :<input type="text" name="input" :value="webjs" v-model.lazy="webjs" ></p>
  59. <!-- 数字类型测试 -->
  60. <p><input type="text" name="input" :value="num" v-model.number="num" ></p>
  61. <p>{{ typeof num}}</p>
  62. </div>
  63. <div class="app">
  64. <p>{{define}}</p>
  65. <!-- key:可以干预diff算法 -->
  66. <!-- VUE通过稳定唯一的key来判断节点是否要重新渲染,以提升效率 -->
  67. <!-- 遍历数组 -->
  68. <ul>
  69. <li>遍历数组</li>
  70. <li v-for="(item,index) in items" :key="index">{{index}}---{{item}}</li>
  71. </ul>
  72. <!-- 遍历对象 -->
  73. <ul>
  74. <li>遍历对象</li>
  75. <li v-for="(item,prop,index) in user" :key="prop">{{prop}}---{{item}}---{{index}}</li>
  76. </ul>
  77. <!-- 遍历对象数组 -->
  78. <ul>
  79. <li>遍历对象数组</li>
  80. <li v-for="(user,index) in users" :key="user.id">{{user.id}}---{{user.name}}---{{user.tel}}</li>
  81. </ul>
  82. <!-- 解构 -->
  83. <ul>
  84. <li>解构</li>
  85. <li v-for="(n,index) in 10" :key="n">{{index}}---{{n}}</li>
  86. </ul>
  87. </div>
  88. <!-- VUEJS包引入 =====> @input="webjs=$event.target.value" -->
  89. <script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script>
  90. <script>
  91. //创建vue实例
  92. const vi=new Vue({
  93. el:'.test',//完成挂载
  94. //数据注入
  95. data:{
  96. title:'hello,VUE学习启动了!',
  97. vtext:'v-text 指令测试',
  98. vhtml:'<span>vhtml使用</span>',
  99. style:'color:red;background-color:cyan;',
  100. class1:`active bigfontsize`,
  101. vbind:'v-bind绑定指令',
  102. vbindclass:'v-bind绑定class',
  103. boolF:false,
  104. boolT:true,
  105. active1:'active',
  106. bigfontsize1:'bigfontsize',
  107. webjs:'双向绑定实现绑定',
  108. num:0,
  109. },
  110. methods:{
  111. show:function(){
  112. //vue 中的this代表它的实例
  113. alert(this.title);
  114. },
  115. add:function(ev,a,b){
  116. console.log(ev),
  117. console.log('%d + %d = %d',a,b,a+b);
  118. console.log(a," + ",b,"=",a+b);
  119. },
  120. }
  121. })
  122. vi.vhtml='<span style="color:red">vhtml使用v-html</span>';//这里定义的值必须出现的data定义里面
  123. document.querySelector('.test').addEventListener('click',function(){
  124. // alert(this.tagName);
  125. });
  126. //单独绑定节点实现v-for
  127. const forarr=new Vue({
  128. el:'.app',//完成挂载
  129. //数据注入
  130. data:{
  131. define:'VUE的遍历',
  132. //数组
  133. items:['北京','上海','广州'],
  134. //对象
  135. user:{
  136. name:'张三',
  137. email:'nandehutu@126.com',
  138. },
  139. //对象数组
  140. users:[
  141. {id:1,name:'zhangsan',tel:13696685574},
  142. {id:2,name:'mingmign',tel:1899668574},
  143. {id:3,name:'sanwuqun',tel:123968574}
  144. ],
  145. },
  146. })
  147. </script>
  148. </body>
  149. </html>

效果:



声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议