vue语法学习

<div id="app">

    <p>{{msg}}</p>

</div>

    <script>

        var vm=new Vue({

           el:'#app',

           data:{

               msg:"个表,你等着!"

           },

           methods:{}

        });

    </script>

说明:

el:操作的区域

data:存放一些参数对象

methods:定义一些自定义方法

 

1、v-cloak、v-text、v-html、v-bind、v-on语法运用

<div id="app">

        <p v-cloak>++++++++{{msg}}--------</p>

        <h4 v-text="msg">------------------</h4>

        <h3 v-html="msg2">1231</h3>

        <input type="button" value="按钮"  v-bind:title="mytitle+',大到你无法想象!'">

        <input type="button" value="绝招" v-on:click="show">

    </div>

    <script>

        var vm=new Vue({

           el:'#app',

           data:{

               msg:"我在这里等你",

               msg2:"<p style='font-size:14px;color:red'>你是魔鬼吗?</p>",

               mytitle:"这是一个功能很强大的按钮"

           },

           methods:{

               show:function(){

                   alert('我弹弹弹弹弹弹!');

               }

           }

        });

    </script>

v-cloak:元素加载完毕后,再一并展示出来,解决插值表达式闪烁的问题,等{{msg}},加载完后,该元素再一并展示出来

<p v-cloak>++++++++{{msg}}--------</p>

v-text:元素中的内容进行覆盖,msg指向的内容将覆盖,元素里面的内容

<h4 v-text="msg">------------------</h4>

v-html:元素中的内容会进行覆盖,且将msg2指向的内容将转换为html语法来解析

<h3 v-html="msg2">1231</h3>

v-bind:用于绑定对象,同时,也可以解析js表达式,简写语法为v-bind:title=:title

<input type="button" value="按钮"  v-bind:title="mytitle+',大到你无法想象!'">

v-on:绑定方法,简写语法为v-on:click=@click

<input type="button" value="绝招" v-on:click="show">

 

 

2、vm内部访问参数或者方法需用this

<div id="app">

        <input type="button" value="跑起来" @click="lang">

        <input type="button" value="停下来" @click="stop">

        <h3>{{msg}}</h3>

</div>

    <script>

        var vm=new Vue({

           el:'#app',

           data:{

               msg:"逮!你别跑,吃俺老孙当头一棒",

               intervalId: null // 在data上定义 定时器Id

           },

           methods:{

               lang(){

                if (this.intervalId != null) return;



                this.intervalId = setInterval(() => {

                var start = this.msg.substring(0, 1)

                // 获取到 后面的所有字符

                var end = this.msg.substring(1)

                // 重新拼接得到新的字符串,并赋值给 this.msg

                this.msg = end + start

                }, 400)

               },

               stop() { // 停止定时器

                clearInterval(this.intervalId)

                // 每当清除了定时器之后,需要重新把 intervalId 置为 null

                this.intervalId = null;

              }

           }

        });

    </script>

在 VM实例中,如果想要获取 data 上的数据,或者 想要调用 methods 中的 方法,必须通过 this.数据属性名 或 this.方法名 来进行访问,这里的this,就表示 我们 new 出来的 VM 实例对象

 

3、修饰符运用

.stop 阻止冒泡,冒泡(点击div里面的按钮,由里到外往外冒泡),终止在button按钮

<div class="inner" @click="div1Handler">

      <input type="button" value="戳他" @click.stop="btnHandler">

</div>

 

.prevent 阻止默认行为,中断了跳转

<a href="http://www.baidu.com" @click.prevent="linkClick">有问题,先去百度</a>

 

.capture 实现捕获触发事件的机制,由外到里,实现捕获事件

<div class="inner" @click.capture="div1Handler">

      <input type="button" value="戳他" @click="btnHandler">

</div>

 

.self 实现只有点击当前元素时候,才会触发事件处理函数,由里到外,触发时间函数

<div class="inner" @click="div1Handler">

      <input type="button" value="戳他" @click="btnHandler">

</div>

 

.once 只触发一次事件处理函数,触发一次后,就按照默认行为进行下去

<a href="http://www.baidu.com" @click.prevent.once="linkClick">有问题,先去百度</a>

 

.self 只会阻止自己身上冒泡行为的触发,并不会真正阻止 冒泡的行为

<div class="outer" @click="div2Handler">

      <div class="inner" @click.self="div1Handler">

        <input type="button" value="戳他" @click="btnHandler">

      </div>

</div>

 

4、v-model实现表单元素和model的数据的双向绑定

<div id="app">

        <input type="text" v-model="msg">

</div>

    <script>

        var vm=new Vue({

           el:'#app',

           data:{

               msg:"为中华崛起而读书"

           },

           methods:{}

        });

    </script>

v-model:双向绑定了表单元素,表单元素值发生变化,model中的数据也会发生变化

 

5、样式绑定与三元运算符运用

<div id="app">

        <h1 class="red thin">Hello World!</h1>

        <h1 v-bind:class="['red', 'thin']">Hello World!</h1>

        <h1 v-bind:class="['thin', flag?'italic':'red']">Hello World!</h1>

        <h1 v-bind:class="['thin','red',{'active':flag}]">Hello World</h1>

        <h1 v-bind:class="classobj">Hello World!</h1>

</div>

    <script>

        var vm=new Vue({

           el:'#app',

           data:{

               flag:true,

               classobj:{red:false,thin:true,italic:true,active:true}

           },

           methods:{}

        });

    </script>

使用三元运算符提供代码可读性

<h1 v-bind:class="['thin','red',{'active':flag}]">Hello World</h1>

 

绑定的对象的属性可以为类名

<h1 v-bind:class="classobj">Hello World!</h1>

 

6、for循环使用(循环普通数组\数组对象\对象\数字)

<div id="app">

        <p v-for="(item,i) in list">索引值:{{i}} --- 每一项:{{item}}</p>

        <p v-for="(item,i) in list2">索引值:{{i}}---名字:{{item.name}}---年龄:{{item.age}}</p>

        <p v-for="(value,key,i) in user">索引值:{{i}}---键:{{key}}---值:{{value}}</p>

<p v-for="count in 10">这是第 {{ count }} 次循环</p>

</div>

<script>

        var vm=new Vue({

           el:'#app',

           data:{

               list:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],

               list2:[

                   {name:'张三',age:'20'},

                   {name:'李四',age:'18'},

                   {name:'王二',age:'19'}

               ],

               user:{name:'张三',age:'20',like:'读书'}

           },

           methods:{}

        });

</script>

 

循环普通数组对象,第一个参数item,为具体的数值,第二项i,为索引值,第三项list为循环的对象,这三项名称都不是固定写法,可任意命名

<p v-for="(item,i) in list">索引值:{{i}} --- 每一项:{{item}}</p>

 

循环数组对象,一个参数item,为循环的对象,具体的数值,则需要item.名称,得到具体值,第二项i,为索引值,第三项list2为循环的数组对象,这三项名称都不是固定写法,可任意命名

<p v-for="(item,i) in list2">索引值:{{i}}---名字:{{item.name}}---年龄:{{item.age}}</p>

 

循环对象,第一个参value,数为数值,第二项key为具体的键,第三项i,为索引值,第四项user为循环的对象,这四项名称都不是固定写法,可任意命名

<p v-for="(value,key,i) in user">索引值:{{i}}---键:{{key}}---值:{{value}}</p>

 

循环数字

<p v-for="count in 10">这是第 {{ count }} 次循环</p>

 

7、for循环key关键字使用

<div id="app">

        <label>id:

            <input type="text" v-model="id">

        </label>

        <label>name:

            <input type="text" v-model="name">

        </label>



        <input type="button" value="增加" v-on:click="add">



        <p v-for="item in list"  v-bind:key="item.id">

            id:{{item.id}}---名字:{{item.name}}

        </p>

</div>

    <script>

        var vm=new Vue({

           el:'#app',

           data:{

               id:'',

               name:'',

               list:[

                   {id:1,name:"余键"},

                   {id:2,name:"姚晶"}

               ]

           },

           methods:{

               add(){

                    this.list.unshift({id:this.id, name:this.name})

                    this.id="";

                    this.name="";

               }

           }

        });

    </script>

v-for 循环的时候,key 属性只能使用 number获取string。

key 在使用的时候,必须使用 v-bind 属性绑定的形式,指定 key 的值。

 

8、v-if、v-show用法

<div id="app">

        <input type="button" value="true" v-on:click="settrue">

        <input type="button" value="false" v-on:click="setfalse">

        <h1 v-if="flag">你知道学习的重要性吗?</h1>

        <h1 v-show="flag">你知道思考的重要性吗?</h1>

</div>

    <script>

        var vm=new Vue({

           el:'#app',

           data:{

               flag:true

           },

           methods:{

                settrue(){

                    this.flag=true;

                },

                setfalse(){

                    this.flag=false;

                }

           }

        });

    </script>

 

v-if 的特点:每次都会重新删除或创建元素,有较高的切换性能消耗

v-show 的特点: 每次不会重新进行DOM的删除和创建操作,只是切换了元素的 display:none 样式,有较高的初始渲染消耗

 

如果元素涉及到频繁的切换,最好不要使用 v-if, 而是推荐使用 v-show

如果元素可能永远也不会被显示出来被用户看到,则推荐使用 v-if

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值