Vue基础day01总结

1 指令

v-model: 表单控件上创建双向绑定

在这里插入图片描述

v-on: 绑定事件监听器

//无参数(默认带有参数:事件对象$even)
v-on:click="handle";
//一个参数
v-on:click="handle('ok')"
//一个参数,一个事件对象
v-on:click="handle('ok', $event)"

v-text: 将数据填充到标签中

//msg是data中的一个变量,保存数据
<span v-text="msg"></span>
<!-- 和下面的一样 -->
<span>{{msg}}</span>

v-bind: 用来响应地更新 HTML 属性

<div id="app">
<a href="http://www.baidu.com">百度</a>
    <a v-bind:href="address">百度</a>
    <a :href="address">百度</a>
</div>

<script src="./vue.js"></script>
<script>
    let app = new Vue({
        el: '#app',
        data: {
            address: 'https://blog.csdn.net/',
        },
        methods: {
        }
    });
</script>

(1)绑定对象

<div v-bind:class="{active: isActive,bgc: isBgc}">
  测试样式
</div>
<button v-on:click='handle'>切换</button>
<style>
   .active {
       border: 1px solid red;
       width: 100px;
       height: 100px;
   }  
   .bgc {
       background-color: orange;
   }
</style>
let app = new Vue({
 el: '#app',
    data: {
        isActive: true,
        isBgc: true

    },
    methods: {
        handle: function() {
            // 控制isActive和isBgc的值在true和false之间进行切换
            this.isActive = !this.isActive;
            this.isBgc = !this.isBgc;
        }
    }
});

(2)绑定数组

<div v-bind:class="[activeClass,bgcClass]">
 测试样式
</div>
<button v-on:click='handle'>切换</button>
let app = new Vue({
   el: '#app',
    data: {
        activeClass: 'active',
        bgcClass: 'bgc'

    },
    methods: {
        handle: function() {
            this.activeClass = '';
            this.bgcClass = '';
        }
    }
});

在这里插入图片描述

绑定对象和绑定数组 的区别
绑定对象的时候: 对象的属性 即要渲染的类名,对象的属性值对应的是 data 中的数据
绑定数组的时候数组里面存的是data 中的数据

(3)绑定style

<div v-bind:style="{ color: activeColor, fontSize: fontSize }">
   测试样式
</div>
let app = new Vue({
   el: '#app',
    data: {
        styleObject: {
            activeColor: 'green',
            fontSize: "30px"
        }
    }
});

或者写为:

<div v-bind:style="[styleObj1, styleObj2]">
 测试样式
</div>
let app = new Vue({
    el: '#app',
     data: {
         styleObj1: {
             color: 'green'
         },
         styleObj2: {
             fontSize: "30px"
         }
     }
 });

这两种写法都是一样的效果:
在这里插入图片描述

案例:简易计算器

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>

    </style>
</head>

<body>

    <div id="compute" cloak>
        <div>
            <div>
                <label for="A">数值A:</label>
                <input type="text" id="A" v-model="A">
            </div>
            <div>
                <label for="B">数值B:</label>
                <input type="text" id="B" v-model="B">
            </div>
            <div>
                <button v-on:click="handle">计算</button>
                <label for="">结果:</label>
                <span v-text="sum"></span>
            </div>

        </div>
    </div>

    <script src="./vue.js"></script>
    <script>
        var v = new Vue({
            //el 指定元素 id 是 compute 的元素
            el: '#compute',
            //data 里面存储的是数据
            data: {
                A: '',
                B: '',
                sum: ''
            },
            methods: {
                handle: function() {
                    this.sum = parseInt(this.A) + parseInt(this.B);

                }
            }
        });
    </script>
</body>

</html>

2 分支

v-if
v-else-if
v-else
<div id="app">
    <div v-if='score>=90'>优秀</div>
    <div v-else-if='score<90&&score>=80'>良好</div>
    <div v-else-if='score<80&&score>60'>一般</div>
    <div v-else>不及格</div>

</div>
<script type="text/javascript" src="./vue.js"></script>
<script type="text/javascript">
    var vm = new Vue({
        el: '#app',
        data: {
            score: 70,
        },
    });
</script>
<!--页面显示:一般-->
v-show
<div id="app">
    <!--flag为flase时,div的style为display:none-->
   <div v-show='flag'>测试v-show</div>
    <button v-on:click='handle'>点击</button>

</div>
<script type="text/javascript" src="./vue.js"></script>
<script type="text/javascript">
    /* v-show的原理:控制元素样式是否显示 display:none */
    var vm = new Vue({
        el: '#app',
        data: {
            flag: false
        },
        methods: {
            handle: function() {
                this.flag = !this.flag;
            }
        }
    });
</script>

在这里插入图片描述

PS:v-if与v-show

v-if:控制元素是否渲染到页面
v-show:控制元素是否显示(已经渲染到了页面)

3 循环

(1)遍历数组

<li v-for='item in list'>{{item}}</li>
<li v-for='(item,index) in list'>{{item}} + '---' +{{index}}</li>
<li :key='item.id' v-for='(item,index) in list'>{{item}} + '---' {{index}}</li>
<div id="app">
    <div>水果列表1</div>
    <ul>
        <li v-for='item in fruits'>{{item}}</li>

    </ul>

    <div>水果列表2</div>
    <ul>
        <li v-for='(item, index) in fruits'>{{item + '---' + index}}</li>
    </ul>

    <div>大学列表</div>
    <ul>
        <!-- key的作用:帮助Vue区分不同的元素,从而提高性能 -->
        <li :key='item.id' v-for='(item, index) in universities'>{{item.name + '---' + index}}</li>
    </ul>
</div>
<script type="text/javascript" src="./vue.js"></script>
<script type="text/javascript">
    var vm = new Vue({
        el: '#app',
        data: {
            fruits: ['apple', 'orange', 'banana'],
            universities: [{
                id: 1,
                name: '西安大学',
                city: '西安'
            }, {
                id: 2,
                name: '北京大学',
                city: '北京'
            }, {
                id: 3,
                name: '四川大学',
                city: '四川'
            }]
        }
    });
</script>

在这里插入图片描述

(2)遍历对象

<div v-for='(value, key, index) in object'></div>
<div id="app">
  <div v-for='(v,k,i) in obj'>{{v + '---' + k + '---' + i}}</div>
</div>
<script type="text/javascript" src="js/vue.js"></script>
<script type="text/javascript">
  
  var vm = new Vue({
    el: '#app',
    data: {
      obj: {
        uname: 'zhangsan',
        age: 13,
        gender: 'female'
      }
    }
  });
</script>

在这里插入图片描述

4 MVVM

MVVM是前端视图层的概念,把前端的视图层,分为了 三部分 Model, View , VM ViewModel。

  • M : (Model) 数据层 Vue 中 数据层 都放在 data 里面
  • V : (View)我们的HTML页面
  • VM: (view-model) 控制器 将数据和视图层建立联系,vm 即 Vue 的实例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值