博客列表 >实例演示常用Vue基础指令

实例演示常用Vue基础指令

lus菜
lus菜原创
2021年01月20日 13:45:54599浏览

1.挂载点,数据注入,响应式:

样式代码:

  1. <body>
  2. <div class="app"> <!--创建一个vue根节点-->
  3. <p>用户名: {{username}}</p> <!--插值就是一个数据占位符 可以接受表达式-->
  4. <p>10 + 30 = {{10 + 30}}</p>
  5. <p>{{flag ? '上午好' : '下午好'}}</p> <!--三元表达式-->
  6. </div>
  7. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  8. <script>
  9. const vm = new Vue({ // 创建vue对象来管理页面内容 这是一个构造函数
  10. el: ".app", //挂载点
  11. data: { //数据注入
  12. username: "饭后甜点",
  13. flag: true,
  14. },
  15. });
  16. console.log(vm.$data.username); // 在data中声明的所有变量都自动成为vue实例的属性
  17. // 以上的过程就是:数据注入
  18. console.log(vm.username);
  19. vm.username = "麻辣小龙虾";
  20. </script>
  21. </body>

效果预览:

2.v-text、v-once、v-html:

样式代码:

  1. <body>
  2. <div class="app">
  3. <p>用户名: {{username}}</p>
  4. <!-- v-text: 由专门vue实例管理的自定义属性,称之为"指令" -->
  5. <!-- v-text ===> innerText,textContent -->
  6. <p v-text="username"></p>
  7. <p v-once="username">只会渲染一次</p>
  8. <!-- v-html: 相当于innerHTML -->
  9. <p v-html="username"></p>
  10. </div>
  11. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  12. <script>
  13. const vm = new Vue({
  14. el: ".app",
  15. data: {
  16. username: "羊肉火锅",
  17. },
  18. });
  19. vm.username = '<em style="color:red">户外小烧烤</em>';
  20. </script>
  21. </body>

效果预览:

3.v-bind,v-on:

3.1v-bind样式代码:

  1. <style>
  2. .active {
  3. color: red;
  4. }
  5. .bigger {
  6. font-size: 2rem;
  7. }
  8. </style>
  9. <body>
  10. <div class="app">
  11. <!-- 绑定style属性 -->
  12. <p :style="style1">style: {{site}}</p> <!-- v-bind: 是高频指令可简写成冒号: -->
  13. <p v-bind:style="`color:violet`">style: {{site}}</p> <!-- 变量 -->
  14. <p :class="`active bigger`">class1: {{site}}</p> <!-- 绑定类class属性 -->
  15. <p :class="class1">class2: {{site}}</p> <!-- 变量 -->
  16. <p :class="{active: isActive, bigger: isBigger}">class3: {{site}}</p> <!-- 对象 -->
  17. <p :class="[`active` , `bigger`]">class4: {{site}}</p> <!-- 数组 -->
  18. </div>
  19. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  20. <script>
  21. const vm = new Vue({
  22. el: ".app",
  23. data: {
  24. site: "php中文网",
  25. style1: "color:violet",
  26. class1: `active bigger`,
  27. isActive: true,
  28. isBigger: false,
  29. },
  30. });
  31. </script>
  32. </body>

效果预览:

3.2v-on样式代码:

  1. <body>
  2. <div class="app" onclick="alert(this.tagName)">
  3. <!-- 绑定事件 -->
  4. <p><a href="https://php.cn" v-on:click="show">显示网站名称可跳转</a></p>
  5. <!-- 事件修饰符prevent:防止元素的默认行为 -->
  6. <!-- v-on也是高频指令,可以简写为:@ -->
  7. <p><a href="https://php.cn" @:click.prevent="show">显示网站名称不可跳转</a></p>
  8. <!-- stop: 阻止冒泡 -->
  9. <p><a href="https://php.cn" v-on:click.prevent.stop="show">显示网站名称冒泡</a></p>
  10. <!-- 仅允许执行一次 -->
  11. <p><a href="https://php.cn" v-on:click.prevent.stop.once="show">显示网站名称仅一次</a></p>
  12. <!-- 事件方法的传参 事件对象的参数名必须是 $event -->
  13. <button @click.stop="handle($event,100,200)">click</button>
  14. </div>
  15. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  16. <script>
  17. const vm = new Vue({
  18. el: ".app",
  19. data: {
  20. site: "php中文网",
  21. },
  22. methods: {
  23. show() {
  24. alert(this.site); // this: 就是当前的vue实例对象
  25. },
  26. handle(ev, a, b) {
  27. console.log(ev.type, ev.target);
  28. console.log(a, "+", b, "=", a + b);
  29. },
  30. },
  31. });
  32. </script>
  33. </body>

效果预览:

4.v-model双向绑定:

样式代码:

  1. <body>
  2. <div class="app">
  3. <p>模型中的数据: {{site}}</p>
  4. <p>双向绑定:<input type="text" v-bind:value="site" @input="site=$event.target.value" /></p>
  5. <!-- 因为这种双向绑定比较常用,vue提供了一个语法糖 -->
  6. <p>双向绑定:<input type="text" v-model="site" /></p>
  7. <!-- 添加一个修饰符 -->
  8. <p>双向绑定:<input type="text" v-model.lazy="site" /></p>
  9. <!-- numbly: 解决字符串转数值 -->
  10. <p>双向绑定:<input type="text" v-model.number="num" /></p>
  11. <p>{{typeof num}}</p>
  12. <!--页面中的数据 -->
  13. </div>
  14. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  15. <script>
  16. const vm = new Vue({
  17. el: ".app",
  18. data: {
  19. site: "今天周三", //模型中的数据
  20. num: "0",
  21. },
  22. });
  23. </script>
  24. </body>

效果预览:

5.v-for key:

样式代码:

  1. <body>
  2. <div class="app">
  3. <!-- key: 可以干预diff算法 -->
  4. <!-- vue通过稳定且唯一的key值判断这个节点是否需要重新渲染,以提升效率 -->
  5. <!-- key只能是整数或不重复的字符串 -->
  6. <!-- 遍历简单数组 -->
  7. <ul>
  8. <li v-for="(item,index) in items" :key="index">{{index}}--{{item}}</li>
  9. </ul>
  10. <!-- 对象 -->
  11. <ul>
  12. <li v-for="(item,prop,index) in user" :key="prop">{{prop}}--{{index}}--{{item}}</li>
  13. </ul>
  14. <!-- 数组对象 -->
  15. <ul>
  16. <li v-for="(user, index) in users" ::key="user.id">{{user.id}}--{{user.name}}--{{user.email}}</li>
  17. </ul>
  18. <!-- 遍历一个数据解构出来 -->
  19. <span v-for="(n,i) in 10" :key="i">{{i}}--{{n}}<br /></span>
  20. </div>
  21. <script src="https://cdn.jsdelIvr.net/npm/vue/dist/vue.js"></script>
  22. <script>
  23. const vm = new Vue({
  24. el: ".app",
  25. data: {
  26. // 数组
  27. items: ["云南省", "安徽省", "福建省"],
  28. // 对象
  29. user: {
  30. name: "早啊",
  31. email: "该睡觉了",
  32. },
  33. // 对象数组, 数据表的查询结果就是一个这样的二维的JSON
  34. users: [
  35. { id: 1, name: "天蓬", email: "tp@php.cn" },
  36. { id: 2, name: "灭绝", email: "mj@php.cn" },
  37. { id: 3, name: "西门", email: "xm@php.cn" },
  38. ],
  39. },
  40. });
  41. </script>
  42. </body>

效果预览:

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