Vue学习

一、vue实例

/* html代码,view层,模板 */
   <div id="app">
        {{ message }}
    </div>
/* 引入相关文件,然创建实例,在实例中写各种方法就ok了 */
<script src="vue_2.2.0.js"></script>
<script type="text/javascript">
    var vm = new Vue({
       el: '#app',
       data: {
          message: 'hello,Datura!!!'
        },
        methods: {
            test (){
                alert(1);
            }
        },
        compontents:{
        //这里存放组件
        }
     });
  /* vm就是new出来的实例 */
  console.log(vm.$data);//也就是数据data,后面还有很多挂载在vm(new出来的)实例上的属性
</script>

二、常用指令

v-bind:动态绑定数据。简写为“:” 。=> 以后的:class="{red:boolean}"
v-on :绑定时间监听器。简写为“@”,例:@click="xxx";
v-text :更新数据,会覆盖已有结构。类似{{ msg }} ;
v-show :根据值的真假,切换元素的display属性;
v-if :根据值的真假,切换元素会被销毁、重建; => 在dom中已消失
v-else-if :多条件判断,为真则渲染;
v-else :条件都不符合时渲染;
v-for :基于源数据多次渲染元素或模块;
v-model :在表单控件元素(input等)上创建双向数据绑定(数据源);
v-pre :跳过元素和子元素的编译过程;
v-once :只渲染一次,随后数据更新也不重新渲染;
v-cloak :隐藏未编译的Mustache语法,在css中设置[v-cloak]{display:none;}

详细用法:

1.v-if

v-if是条件渲染指令,它根据表达式的真假来删除和插入元素
基本语法:
v-if="expression"
expression是一个返回布尔值的表达式,表达式可以是一个布尔属性,也可以是一个返回布尔的运算式。

<div id="app">
            <div v-if="isMale">男士</div>
            <div v-if="age>=20">age:{{age}}</div>
        </div>
        
var vm = new Vue({
            el: '#app',
            data: {
                age:25,
                isMale:true,
            }
        })

2.v-show

v-show和v-if区别。
v-show不管条件是否成立,都会渲染html,而v-if只有条件成立才会渲染

先看两个截图,第一个是当isMale为true时,第二张图是isMale为false条件不成立时,可以看到v-if的html并没有渲染出来,
而使用v-show的div仅仅是更改了它的样式display: none;

<div id="app">
            <div v-if="isMale">男士v-if</div>
            <div v-show="isMale">男士v-show</div>
        </div>
var vm = new Vue({
            el: '#app',
            data: {
                isMale:false
            }
        })

3.v-else

v-else指令与v-if或者v-show同时使用,v-if条件不成立则会显示v-else内容

<div id="app">
            <div v-if="isMale">男士</div>
            <div v-else>女士</div>
        </div>
        var vm = new Vue({
            el: '#app',
            data: {
                isMale:true
            }
        })

4.v-for

v-for指令基于一个数组渲染一个列表,它和JavaScript的遍历语法相似
v-for="item in list"
list是一个数组,item是当前遍历的数组元素
v-for="(item,index) in list"其中index是当前循环的索引,下标从0开始

<div id="app">
            <table>
                <tr class="thead">
                    <td>序号</td>
                    <td>姓名</td>
                    <td>年龄</td>
                </tr>
                <tr v-for="(item,index) in list">
                    <td v-text="index+1"></td>
                    <td v-text="item.name"></td>
                    <td v-text="item.age"></td>
                </tr>
            </table>
        </div>
        
var vm = new Vue({
            el: '#app',
            data: {
                list:[{
                    name:'章三',
                    age:18
                },{
                    name:'李四',
                    age:23
                }]
            }
        })

5.v-bind

v-bind动态地绑定一个或多个特性,可以在其名称后面带一个参数,中间放一个冒号隔开,这个参数通常是HTML元素的特性(attribute),如v-bind: class

class可以和v-bind:class同时存在 ,也就是说有class了,再添加v-bind:class并不会覆盖原来的样式类,而是在原来基础上添加新的类名

<div id="app">
            <img v-bind:src="img" class="logo" 
                v-bind:class="isLogo?'':'product'" 
                v-bind:style="{'border':hasBorder?'2px solid red':''}"></img>
        </div>
        
        var vm = new Vue({
            el: '#app',
            data: {
                img:'https://www.baidu.com/img/bd_logo1.png',
                isLogo:false,
                hasBorder:true
            }

v-bind:src也可简写成:src

6.v-on

v-on用于监听DOM事件,用法和v-bind类似,例如给button添加点击事件

<button v-on:click="show">


同样,和v-bind一样,v-on也可以使用简写,用@符号代替,修改代码:

<button @click="show">

 

以下是一个点击隐藏和显示p文本段落的代码:

<div id="app">
            <p v-show="isShow">微风轻轻的吹来,带来了一丝丝凉意</p>
            <div>
                <button type="button" v-on:click="show(1)">显示</button>
                <button type="button" v-on:click="show(0)">隐藏</button>
            </div>
        </div>
        
        var vm = new Vue({
            el: '#app',
            data: {
                isShow:true
            },
            methods:{
                show:function(type){
                    if(type){
                        this.isShow = true;
                    }else{
                        this.isShow = false;
                    }
                }
            }
        })

7.v-model

使用v-model指令在表单元素上创建双向数据绑定

<!--这是我们的View-->
<div id="app">
    <p>{{ message }}</p>
    <input type="text" v-model="message"/>
</div>

将message绑定到文本框,当更改文本框的值时,<p>{{ message }}</p> 中的内容也会被更新。
反过来,如果改变message的值,文本框的值也会被更新

 

posted @ 2020-07-14 10:48  二猫子  阅读(145)  评论(1编辑  收藏  举报