首页 > 其他 > 详细

000 vue

时间:2019-08-17 13:30:46      阅读:91      评论:0      收藏:0      [点我收藏+]

一:vue实例

1.实例

  新建项目:

  技术分享图片

 

2.程序

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <script src="./lib/vue-2.4.0.js"></script>
 9 </head>
10 <body>
11     <!-- 第一个vue示例 -->
12     <div id="app">
13         <p>{{msg}}</p>
14     </div>
15     <script>
16         // 创建vue实例
17         var vm = new Vue({
18             el: #app,
19             data: {
20                 msg: hello vue!
21             }
22         });
23     </script>
24 </body>
25 </html>

  效果:

  技术分享图片

 

二:知识点

1.v-cloak解决插值闪烁问题

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <style>
 9         [v-cloak] {
10             display: none;
11         }
12     </style>
13     
14 </head>
15 <body>
16     <!-- 解决插值表达式闪烁问题 -->
17     <div id="app">
18         <p v-cloak>{{msg}}</p>
19     </div>
20 
21     <script src="./lib/vue-2.4.0.js"></script>
22     <script>
23         var vm = new Vue({
24             el: #app,
25             data: {
26                 msg: hello vue!
27             }
28         });
29     </script>
30 </body>
31 </html>

 

2.v-text与插值表达式

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <style>
 9       
10     </style>
11     
12 </head>
13 <body>
14     <!-- 解决插值表达式闪烁问题 -->
15     <div id="app">
16         <p v-text="msg"></p>
17     </div>
18 
19     <script src="./lib/vue-2.4.0.js"></script>
20     <script>
21         var vm = new Vue({
22             el: #app,
23             data: {
24                 msg: hello vue!
25             }
26         });
27     </script>
28 </body>
29 </html>

  效果:

  技术分享图片

  区别:

  v-text默认没有闪烁问题的

  插值表达式可以在前后放其他的内容

  v-text会覆盖元素中原本的内容,插值表达式只会替换自己的占位符,不会把整个元素的内容进行清空

  

3.v-html渲染html

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <style>
 9       
10     </style>
11     
12 </head>
13 <body>
14     <!-- 解决插值表达式闪烁问题 -->
15     <div id="app">
16         <p v-html="msg2"></p>
17     </div>
18 
19     <script src="./lib/vue-2.4.0.js"></script>
20     <script>
21         var vm = new Vue({
22             el: #app,
23             data: {
24                 msg: hello vue!,
25                 msg2:<h1>这是一个H标签</h1>
26             }
27         });
28     </script>
29 </body>
30 </html>

  效果:

  技术分享图片

 

4.v-bind:绑定属性指令

  其中,在v-bind后的mytitle被认为是一个变量,然后可以进行表达式运算

  可以被简写为:title="mytitle"。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <style>
 9       
10     </style>
11     
12 </head>
13 <body>
14     <!-- 解决插值表达式闪烁问题 -->
15     <div id="app">
16         <input type="button" value="按钮" v-bind:title="mytitle">
17     </div>
18 
19     <script src="./lib/vue-2.4.0.js"></script>
20     <script>
21         var vm = new Vue({
22             el: #app,
23             data: {
24                 msg: hello vue!,
25                 mytitle:自定义属性
26             }
27         });
28     </script>
29 </body>
30 </html>

  效果:

  技术分享图片

 

5.v-on:事件机制

  可以简写@click="show”

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <style>
 9       
10     </style>
11     
12 </head>
13 <body>
14     <!-- 解决插值表达式闪烁问题 -->
15     <div id="app">
16         <input type="button" value="按钮" v-on:click="show">
17     </div>
18 
19     <script src="./lib/vue-2.4.0.js"></script>
20     <script>
21         var vm = new Vue({
22             el: #app,
23             data: {
24                 msg: hello vue!
25             },
26             methods:{
27                 show:function(){
28                     alert("hello on");
29                 }
30             }
31         });
32     </script>
33 </body>
34 </html>

 

三:案例

1.跑马灯

  method中的方法调用data中的数据需要使用this

  使用=>,使用function定义的函数,this的指向随着调用环境的变化而变化的,而箭头函数中的this指向是固定不变的,一直指向的是定义函数的环境。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <script src="./lib/vue-2.4.0.js"></script>
 9 </head>
10 <body>
11     <div id="app">
12         <input type="button" value="浪起来" @click="lang">
13         <input type="button" value="低调" @click="stop">
14         <h4>{{msg}}</h4>
15     </div>
16     <script>
17         var vm=new Vue({
18             el:#app,
19             data:{
20                 msg:继续方玉,不要浪 ,
21                 timeId:null
22             },
23             methods:{
24                 lang(){
25                     if(this.timeId!=null) return;
26                     this.timeId=setInterval(() => {
27                         var start=this.msg.substring(0,1);
28                         var end=this.msg.substring(1);
29                         this.msg=end+start
30                     },1000)    
31                 },
32                 stop(){
33                     clearInterval(this.timeId);
34                     this.timeId=null;  //需要重新置为null
35                 }
36             }
37         })
38     </script>
39 </body>
40 </html>

  效果:

  技术分享图片

  

四:事件修饰符

1.事件修饰符的介绍

  stop:阻止冒泡

  prevent:阻止默认事件

  capture:添加事件监听器时使用事件捕获模式

  self:只当事件在该元素本身触发时触发回调

  once:事件只触发一次

 

2.stop

  基础程序

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <script src="./lib/vue-2.4.0.js"></script>
 9     <style>
10         .inner {
11             height: 150px;
12             background-color: darkcyan;
13         }
14     </style>
15 </head>
16 <body>
17     <div id="app" >
18         <div class="inner" @click="divhandle">
19                 <input type="button" value="浪起来" @click="btnhandle">
20         </div>
21         
22     </div>
23     <script>
24         var vm=new Vue({
25             el:#app,
26             data:{
27                 msg:继续方玉,不要浪 
28             },
29             methods:{
30                 divhandle(){
31                     console.log("div 触发");
32                 },
33                 btnhandle(){
34                     console.log("input 触发");
35                 }
36             }
37         })
38     </script>
39 </body>
40 </html>

  效果:

  技术分享图片

·  阻止冒泡程序:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <script src="./lib/vue-2.4.0.js"></script>
 9     <style>
10         .inner {
11             height: 150px;
12             background-color: darkcyan;
13         }
14     </style>
15 </head>
16 <body>
17     <div id="app" >
18         <div class="inner" @click="divhandle">
19                 <input type="button" value="浪起来" @click.stop="btnhandle">
20         </div>
21         
22     </div>
23     <script>
24         var vm=new Vue({
25             el:#app,
26             data:{
27                 msg:继续方玉,不要浪 
28             },
29             methods:{
30                 divhandle(){
31                     console.log("div 触发");
32                 },
33                 btnhandle(){
34                     console.log("input 触发");
35                 }
36             }
37         })
38     </script>
39 </body>
40 </html>

 

 

3.prevent

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <script src="./lib/vue-2.4.0.js"></script>
 9     <style>
10         .inner {
11             height: 150px;
12             background-color: darkcyan;
13         }
14     </style>
15 </head>
16 <body>
17     <div id="app" >
18         <a href="http://www.baidu.com" @click.prevent="linkclick">百度</a>
19     </div>
20     <script>
21         var vm=new Vue({
22             el:#app,
23             data:{
24                 msg:继续方玉,不要浪 
25             },
26             methods:{
27                 linkclick(){
28                     console.log("百度");
29                }
30             }
31         })
32     </script>
33 </body>
34 </html>

 

 

4.capture

  从外到里进行捕获

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <script src="./lib/vue-2.4.0.js"></script>
 9     <style>
10         .inner {
11             height: 150px;
12             background-color: darkcyan;
13         }
14     </style>
15 </head>
16 <body>
17     <div id="app" >
18         <div class="inner" @click.capture="divhandle">
19                 <input type="button" value="浪起来" @click.stop="btnhandle">
20         </div>
21         
22     </div>
23     <script>
24         var vm=new Vue({
25             el:#app,
26             data:{
27                 msg:继续方玉,不要浪 
28             },
29             methods:{
30                 divhandle(){
31                     console.log("div 触发");
32                 },
33                 btnhandle(){
34                     console.log("input 触发");
35                 }
36             }
37         })
38     </script>
39 </body>
40 </html>

 

 

5.self

  只有自己触发才会触发,类似于冒泡或者捕获这种被动的触发就不会被触发

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <script src="./lib/vue-2.4.0.js"></script>
 9     <style>
10         .inner {
11             height: 150px;
12             background-color: darkcyan;
13         }
14     </style>
15 </head>
16 <body>
17     <div id="app" >
18         <div class="inner" @click.self="divhandle">
19                 <input type="button" value="浪起来" @click="btnhandle">
20         </div>
21         
22     </div>
23     <script>
24         var vm=new Vue({
25             el:#app,
26             data:{
27                 msg:继续方玉,不要浪 
28             },
29             methods:{
30                 divhandle(){
31                     console.log("div 触发");
32                 },
33                 btnhandle(){
34                     console.log("input 触发");
35                 }
36             }
37         })
38     </script>
39 </body>
40 </html>

 

 

6.once

  只触发一次,以后不再起作用,而且可以串联

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <script src="./lib/vue-2.4.0.js"></script>
 9     <style>
10         .inner {
11             height: 150px;
12             background-color: darkcyan;
13         }
14     </style>
15 </head>
16 <body>
17     <div id="app" >
18         <a href="http://www.baidu.com" @click.prevent.once="linkclick">百度</a>
19     </div>
20     <script>
21         var vm=new Vue({
22             el:#app,
23             data:{
24                 msg:继续方玉,不要浪 
25             },
26             methods:{
27                 linkclick(){
28                     console.log("百度");
29                }
30             }
31         })
32     </script>
33 </body>
34 </html>

 

 

五:v-model

1.v-model数据双向绑定

  如果在input中输入文本,则vm.msg可以查看新输入的文本;同样,在控制台上vm.msg=‘6667777‘进行赋值,则input框中的数据也会进行改变

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <script src="./lib/vue-2.4.0.js"></script>
 9 </head>
10 <body>
11     <div id="app">
12             <input type="text" v-model="msg">
13     </div>
14     
15     <script>
16         var vm=new Vue({
17             el:#app,
18             data:{
19                 msg:学习代码
20             },
21             methods:{
22 
23             }
24         })
25     </script>
26 </body>
27 </html>

 

 

2.简易计算器

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <script src="./lib/vue-2.4.0.js"></script>
 9 </head>
10 <body>
11     <div id="app">
12         <input type="text" v-model="n1">
13         <select name="" id="" v-model="opt">
14             <option value="+">+</option>
15             <option value="-">-</option>
16             <option value="*">*</option>
17             <option value="/">/</option>
18         </select>
19         <input type="text" v-model="n2">
20         <input type="button" value="=" @click="calc">
21         <input type="text" v-model="result">
22     </div>
23     <script>
24         var vm=new Vue({
25             el: #app,
26             data: {
27                 n1: 0,
28                 n2: 0,
29                 result: 0,
30                 opt: +
31             },
32             methods:{
33                 calc(){
34                     switch(this.opt){
35                         case +: 
36                             this.result=parseInt(this.n1)+parseInt(this.n2);
37                             break;
38                         case -:
39                         this.result=parseInt(this.n1)-parseInt(this.n2);
40                             break;
41                         case *:
42                         this.result=parseInt(this.n1)*parseInt(this.n2);
43                             break;
44                         case /:
45                         this.result=parseInt(this.n1)/parseInt(this.n2);
46                             break;
47                     }
48                 }
49             }
50         });
51     </script>
52 </body>
53 </html>

 

 

六:在vue中使用样式

1.

 

000 vue

原文:https://www.cnblogs.com/juncaoit/p/11367668.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!