博客列表 >vue基础知识 指令

vue基础知识 指令

咸鱼老爷
咸鱼老爷原创
2021年03月09日 12:38:43541浏览

{{插值表达式}}

  1. <h2>{{word}}</h2>
  2. <script>
  3. const vue = new Vue({
  4. //挂载点
  5. el: 'h2',
  6. //数据注入
  7. data: {
  8. word: '这是插值'
  9. }
  10. });
  11. </script>

指令:由专门vue实例管理的自定义属性,称之为指令;

v-text==》innerText,textContent;
v-once只渲染一次
v-html==》innerHTML

  1. <p v-text='username'></p>
  2. <p v-once='username'>只渲染一次</p>
  3. <p v-html='username'></p>
  4. <script>
  5. const vm = new Vue({
  6. el: '.app',
  7. data: {
  8. username: 'admin',
  9. },
  10. })
  11. </script>

绑定style属性

v-bind: style;简写为:style;

  1. <p v-bind:style='style1' v-text='username'></p>
  2. <!-- 简写 -->
  3. <p :style='style1' v-text='username'></p>
  4. <script>
  5. const vm = new Vue({
  6. el: '.app',
  7. data: {
  8. username: 'admin',
  9. style1: 'color:red',
  10. },
  11. })
  12. </script>

绑定类class属性

v-bind: class,简写为:class

  1. <style>
  2. .active {
  3. color: rosybrown;
  4. }
  5. .big {
  6. font-size: 2rem;
  7. }
  8. </style>
  9. <div class="app">
  10. <p v-text='username' v-bind:class='class1'></p>
  11. <p v-text='username' :class='[`active`,`big`]'></p>
  12. <p v-text='username' :class='{active:isActive,big:isBig}'></p>
  13. </div>
  14. <script>
  15. const vm = new Vue({
  16. el: '.app',
  17. data: {
  18. username: 'admin',
  19. style1: 'color:red',
  20. class1: `active big`,
  21. isActive: true,
  22. isBig: false,
  23. },
  24. })
  25. </script>

绑定事件

v-on:事件 可以简写为@事件

  1. <p v-on:click='show' v-text='site'></p>
  2. <p @click='show' v-text='site'></p>
  3. <script>
  4. const vm = new Vue({
  5. el: '.app',
  6. data: {
  7. username: 'admin',
  8. style1: 'color:red',
  9. class1: `active big`,
  10. isActive: true,
  11. isBig: false,
  12. site: '这是网站'
  13. },
  14. methods: {
  15. show() {
  16. //this:就是当前vue实例对象
  17. alert(this.site)
  18. }
  19. }
  20. })
  21. </script>

事件修饰符

  • prevent:防止元素的默认行为
    <a href="http://www.baidu.com" v-on:click.prevent='show' v-text='site'></a>
  • stop 阻止冒泡
    <a href="http://www.baidu.com" v-on:click.prevent.stop='show' v-text='site'></a>
  • onece 只允许执行一次
    <a href="http://www.baidu.com" v-on:click.prevent.once.stop='show' v-text='site'></a>

    事件方法的传参

    事件对象的参数么必须是$event

    1. <button @click.stop='handle($event,100,200)'>click</button>
    2. <script>
    3. const vm = new Vue({
    4. el: '.app',
    5. data: {
    6. username: 'admin',
    7. style1: 'color:red',
    8. class1: `active big`,
    9. isActive: true,
    10. isBig: false,
    11. site: '这是网站'
    12. },
    13. methods: {
    14. show() {
    15. //this:就是当前vue实例对象
    16. alert(this.site)
    17. },
    18. handle(ev, a, b) {
    19. console.log(ev.type, ev.target);
    20. console.log('%d+%d=%d', a, b, (a + b));
    21. }
    22. }
    23. })
    24. </script>

    双向绑定

    v-model

    1. <div class="app">
    2. <p>{{site}}</p>
    3. <p><input type="text" :value='site' @input="site=$event.target.value"></p>
    4. <!-- 语法糖 v-model -->
    5. <p><input type="text" v-model.lazy='site'></p>
    6. </div>
    7. <script>
    8. //双向绑定
    9. const vm = new Vue({
    10. el: '.app',
    11. data: {
    12. site: 'admin.com',
    13. },
    14. methods: {
    15. }
    16. })
    17. </script>

    列表渲染

    使用v-for指令基于一个数组来渲染一个列表,使用 item in items(别名 in 数据源)语法

    1. <div class="app">
    2. <!-- key可以干预diff算法
    3. vue通过稳定且唯一的key值判断这个节点是否需要重新渲染,以提升效率
    4. -->
    5. <!-- 数组 -->
    6. <ul>
    7. <li v-for="(item,index) in items" :key='index'> {{index}}--{{item}}</li>
    8. </ul>
    9. <!-- 对象 -->
    10. <ul>
    11. <li v-for="(item,prop,index) in user" :key="prop"> {{index}}-{{prop}}-{{item}}</li>
    12. </ul>
    13. <!-- 对象数组 -->
    14. <ul>
    15. <li v-for="(item,index) in users" :key="item.id"> {{item.id}}--{{item.name}}--{{item.age}}</li>
    16. </ul>
    17. <span v-for="(n,i) in 10" :key='i'>{{n}}</span>
    18. </div>
    19. <script>
    20. const vm = new Vue({
    21. el: '.app',
    22. data: {
    23. items: ['西安', '渭南', '咸阳'],
    24. user: {
    25. id: 10,
    26. name: 'admin',
    27. age: 22
    28. },
    29. users: [{
    30. id: 1,
    31. name: 'admin',
    32. age: 18
    33. }, {
    34. id: 2,
    35. name: 'admin1',
    36. age: 28
    37. }, {
    38. id: 3,
    39. name: 'admin2',
    40. age: 38
    41. },
    42. ]
    43. }
    44. })
    45. </script>

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