Vue基础语法

v-if指令

v-if是条件渲染指令,它根据表达式的真假来删除和插入元素,它的基本语法如下:v-if="expression"

expression是一个返回bool值的表达式,表达式可以是一个bool属性,也可以是一个返回bool的运算式。例如:

<!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>
</head>
<body>
    <div id="app">
        <h3>班长多少钱,局决定觉定晚上吃什么</h3>
        <div v-if="money >= 1000"> 晚上火锅</div>
        <div v-else-if="money >= 5000"> 晚上大餐</div>
        <div v-else-if="money >= 100"> 南昌拌粉 </div>
        <div v-else> 饿着 </div>
    </div>

    <script src="../vue.js"></script>

    <script>
        new Vue({
            el:'#app',
            data:{
                money:1000
            }
        })
    </script>
</body>
</html>

v-show指令

v-show也是条件渲染指令,和v-if指令不同的是,使用v-show指令的元素始终会被渲染到HTML,它只是简单地为元素设置CSS的style属性(display)。

<body>
    <!-- v - show 和 v - if 都可以用来控制标签的显示与隐藏
<标签 v - show ='布尔值'></标签>
<标签 v - if ='布尔值'></标签>
当布尔值为 true ,他们就显示;当布尔值为 false ,他们就隐藏,
--> 
  <!-- <div is="app">
    <div v-show="isShow">我是由v-show控制的</div>
    <div v-if="isShow">我是由v-if控制的</div>
  </div>

  <script src="../vue.js"></script>

  <script>
    new Vue ({
        el:'#app',
        data:{
            isShow:true
        }
    })
  </script>

   面试题!重要!重要!重要!【 v - show 】
1.本质就是标签 display 设置为 none ,控制隐藏。只是基于 CSs 进行切换。2.v- show 有更高的初始渲染消耗。
3.V- show 适合频繁切换的情况。
【 v - if 】
1.动态的向 DOM 树内頃加或者删除 DOM 元素。2.v- if 有更高的切换消耗。
3.v- if 适合运行条件很少改变的情况。 -->
</body>

v-for指令

v-for指令基于一个数组渲染一个列表,它和JavaScript的遍历语法相似:v-for="item in items"

items是一个数组,item是当前被遍历的数组元素。

v-for遍历数组和对象

<!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>
</head>
<body>
    <!-- 【v-for】
    语法;<标签 v-for='item in 数组'> </标签> -->

    <div id="app">
        <button @click="add"> 在最后添加一个</button>
        <ul>
            <!-- 第一个参数是元素,第二个参数是下标 与名字无关 -->
            <li v-for="item in list">{{ item }}---{{ index}}</li>
        </ul>
    </div>

    <script src="../vue.js"></script>

    <script>
        new Vue({
            el:'#app',
            data:{
                list:['刘备','关羽','张飞','赵云']
            },
            methods:{
                add(){
                    this.list.push('马超')
                }
            }
        })

        // // 原生写法
        // for (let i = 0 ; i < list.length; i ++){
        //     let li = document.createElement('li')
        //     li.lnnerHTML = list[i]
        //     u1.appendchild(li)
        // }
    </script>
</body>
</html>

<!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>
</head>
<body>
    <div id="app">
        <ul>
            <!-- 对象有多少个属性就会产生多少个这样的标签 -->
            <li v-for="item in obj">{{ item }}</li>
            <!-- 第一个参数是属性值,第二个参数是属性名 -->
            <li v-for="(val,key) in obj">{{ val }}---{{ key }}</li>
        </ul>
    </div>


    <script src="../vue.js"></script>

    <script>
        new Vue({
            el:'#app',
            data:{
                obj:{
                    name:'jack',
                    age:16,
                    sex:'男'
                }

            }
        })
    </script>
</body>
</html>

v-bind指令

v-bind指令可以在其名称后面带一个参数,中间放一个冒号隔开,这个参数通常是HTML元素的特性(attribute)。

  • 动态绑定a元素的href属性

  • 动态绑定img元素的src属性

<!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>
</head>
<body>
    <div id="app">
        <a href="http://www.baidu.com">跳转</a>
        <a v-bind:href="url">跳转</a>
        <button @click="change" target="_blank">跳转</button>
    </div>

    <script src="./../vue.js"></script>

    <script>
        new Vue({
            el:'#app',
            data:{
                url:'http://mi.com'
            },
            methods:{
                change(){
                    this.url = 'http://taobao.com'
                }
            }
        })
    </script>
</body>
</html>

v-on指令

v-on指令用于给监听DOM事件,它的用语法和v-bind是类似的,例如监听<a>元素的点击事件:<a v-on:click="doSomething">

有两种形式调用方法:绑定一个方法(让事件指向方法的引用),或者使用内联语句。

v-on参数

  • 情况一:如果该方法不需要额外参数,那么方法后的()可以不添加。但是注意,如果方法本身中有一个参数,那么会默认将原生事件event参数传递进去。

  • 情况二:如果该方法需要传入某个参数,同时需要event时,可以通过$event传入事件。

<!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>
</head>
<body>
    <!-- v-on指令是事件绑定指令,当用户需要点击,按下键盘,滚动鼠标等操作时,
    想要添加一些自己的逻辑处理时,就可以为特定的元素绑定一些特定的事件。 -->

    <!-- 我们先在被vue实例挂载的标签div中,放入一个按钮为input标签,在标签内部写入v-on指令, -->
    <!-- 冒号(:)后面就是事件名,等号(=)后面就是需要绑定的事件名称 -->
    <div id="app">
        <!-- 当点击这个按钮 就调用fn1系数 -->
        <button v-on:click="fn1">点我试一试</button>  
         <!-- 当双击这个按钮  就调用fn1系数 -->
        <button v-on:dblclick="fn1">再试一次</button> 
         <!-- 当移入这个按钮 就调用fn2函数 -->
        <button mouseenter="fn2">移入我</button>

        <!-- 简写形式 吧v-on改成@ -->
        <h4>下面是简写形式</h4>
        <hr>
        <!-- 当点击这个按钮 就调用fn1系数 -->
        <button @click="fn1">点我干嘛</button>
        <!-- 当双击这个按钮  就调用fn1系数 -->
        <button @dblclick="fn1">再试一次</button>
        <!-- 当移入这个按钮 就调用fn2函数 -->
        <button @mouseenter="fn2">移入我</button>
    </div>
   

    <script src="./../vue.js"></script>

    <script>
        new Vue({
            el:'#app',
           
            methods:{
                fn1(){
                    alert('点我干嘛')
                },
                fn2(){
                    alert('你怎么了吗')
                }

            }
        })
    </script>
</body>
</html>

v-model

1、双向绑定示例

MVVM模式本身是实现了双向绑定的,在Vue.js中可以使用v-model指令在表单元素上创建双向数据绑定。

v-model其实是一个语法糖,它的背后本质上包含两个操作

v-bind绑定一个value属性

v-on指令给当前元素绑定input事件

<!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>
    <!-- 引入 -->
    <script src="./vue.js"></script>
</head>
<body>
    <div id="app">
        <!-- <button @click="msg = '你好'"></button> -->

        <!-- 输入框 -->
        <!-- v-model获取输入的内容 -->
        <!-- <input type="text" v-model="msg"> -->
        <!-- <p>{{ msg }}</p> -->

        <!-- 下拉框 -->
        <!-- v-model获得选中的value值 -->
        <!-- <select v-model="fruit">
            <option value="apple">苹果</option>
            <option value="orange">橘子</option>
            <option value="banana">香蕉</option>       
            <option value="red pitaya">火龙果</option>       
        </select> -->


        <!-- 复选制;只有选中和未选中两种状态 -->
        <!-- v-model得到true或flase -->
        <!-- <input type="checkbox" v-model="chk">
    </div>

        <script>
            // 例子
        new Vue({
            el:"#app",
            data:{
                msg:'小马',
                fruit:'火龙果',
                chk:true
            }
        })
    </script>
</body> -->
</html>

v-model修饰符

lazy修饰符:

默认情况下,V-mode默认是在input事件中同步输入框的数据的。

也就是说,一旦有数据发生改变对应的data的数据就会自动发生改变。

lazy修饰符可以让数据在失去焦点或者回车时才会更新:

number修饰符:

默认情况下,在输入框中无论我们输入的是字母还是数字,都会被当做字符串类型进行处理。

但是如果我们希望处理的是数字类型,那么最好直接将内容当做数字处理。

number修饰符可以让在输入框中输入数字的内容自动转成数字类型:

trim修饰符:

如果输入的内容首尾有很多空格,通常我们希望将其去除口trim修饰符可以过滤内容左右两边的空格

lazy、number、trim。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值