Vue1.0学习总结(3)———vue1.0的生命周期、vue计算属性computed的使用、vue实例(vm)上方法总结、vue结合动画使用

vue的生存周期:(1.0版本)
vue自身提供钩子函数:
1)created-->实例已经创建(实例创建完成执行)
2)beforeCompile-->在实例编译之前执行
3)compiled-->在编译之后执行
4)ready-->把数据插入到文档中时执行 相当于jquery中的window.onload
5)beforeDestroy-->销毁之前
6)destroyed-->销毁之后

--------------------------------------------------------------------------
vue计算属性的使用:
computed:{ //1.放的是属性(也是data里面的数据),放一些业务逻辑代码
  b:function(){ //2.不写默认为调用get方法,此时b并不是函数,是一个属性,使用的时候就和data里的数据使用方法一样
    return this.a+1; //3.return的值返回b的值,否则b没有值,即如果想改变b的值必须改变get方法的return值
  }
}


computed完整写法:
computed:{
  b:{
    get:function(){ //得到值
      return 值
    },
    set:function(val){ //设置值
      alert(val);
    }
  }
}


computed里的get方法使用示例:
<div id="box">
  a => {{a}}
  <br>
  b => {{b}}
</div>
<script>
var vm=new Vue({
  el:'#box',
  data:{
    a:1
  },
  computed:{
    b:function(){
      //业务逻辑代码
      return this.a+1;
    }
  }
});

document.onclick=function(){
  vm.a=101; //点击页面之后,a=101,b=102
};
</script>


computed里的set方法使用示例:
<div id="box">
  a => {{a}}
  <br>
  b => {{b}}
</div>
<script>
  var vm=new Vue({
    el:'#box',
    data:{
      a:1
    },
    computed:{
      b:{
       get:function(){
         return this.a+2;
       },
       set:function(val){
         this.a=val;
       }
      }
    }
  });

  document.onclick=function(){
    vm.b=10; 当点击页面时,a=10,b=12,这是10作为参数传给set方法。
  };
</script>
computed:放的是一些业务逻辑代码,一定要记得return
-------------------------------------------------------------------

vue实例方法总结:(实例vm)
1) vm.$el -->就是获取的元素

2) vm.$data -->是一个对象,就是data
vm.$data.msg -->data对象里的属性

3)vm.$mount('#box') -->手动挂载vue程序 在不写el时,需要手动挂载上去

4)vm.$options -->获取自定义属性或方法
var vm = new Vue({
  aa:11, //自定义属性或方法
  show:function(){
    alert(1);
  },
  data:{
    msg:'well'
  }
}).$mount('#box');
console.log(vm.$options.aa);
vm.$options.show();

5) vm.$destory -->销毁对象

6) vm.$log() -->查看现在数据的状态 console.log(vm.$log());

7)vm.$watch()-->监听数据变化
a)浅度监听:只监听一个数据的变化
  vm.$watch('name',fnCb):

  var vm = new Vue({
    el:'#box',
    data:{
      a:111,
      b:2
    }
  });
  vm.$watch('a',function(){
    alert('发生变化了')
  });
  document.onclick=function(){
    vm.a=100;
  }


b)深度监视:需要加第三个参数(如json里面内容发生变化,不加deep:true就监听不到变化)
  vm.$watch('name',fnCb,{deep:true}):

  <div id="box">
    {{a|json}} //这里使用了json过滤器,使json对象能够显示出来
    <br/>
    {{b}}
  </div>

  var vm = new Vue({
    el:'#box',
    data:{
      a:{name:'yufan',age:16},
      b:2
    }
  });
  vm.$watch('a',function(){
    alert('发生变化了')
  },{deep:true});
  document.onclick=function(){
    vm.a.name='xioaming';
  }

 

vue结合动画使用:
本质用的是CSS3:transition animation

1)自己写的动画:(自己写的不好看)
第一步: transition="fade"
<div id="box1" v-show="bsign" transition="fade"></div>
第二步:添加 .fade-transition{
        //transition:1s all ease;
       }
第三步:添加进入动画 .fade-enter{
            //opacity: 0;
           }
第四步:添加离开动画 .fade-leave{
            //opacity: 0;
            //transform: translateX(200px);
          }


动画示例:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6     <script src="bower_components/vue/dist/vue.js"></script>
 7     <style>
 8         #div1{
 9             width:100px;
10             height:100px;
11             background: red;
12         }
13 
14         .fade-transition{
15             transition: 1s all ease;
16         }
17         .fade-enter{
18             opacity: 0;
19         }
20         .fade-leave{
21             opacity: 0;
22             transform: translateX(200px);
23         }
24     </style>
25 </head>
26 <body>
27     <div id="box">
28         <input type="button" value="按钮" @click="toggle">
29         <div id="div1" v-show="bSign" transition="fade"></div>
30     </div>
31 
32     <script>
33         new Vue({
34             el:'#box',
35             data:{
36                 bSign:true
37             },
38             methods:{
39                 toggle(){
40                     this.bSign=!this.bSign;
41                 }
42             }
43         });
44     </script>
45 </body>
46 </html>

2)利用插件animate.css (class="animated" transition="bounce")
  下载插件:bower install animate.css

  

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6     <script src="bower_components/vue/dist/vue.js"></script>
 7     <link rel="stylesheet" href="bower_components/animate.css/animate.css">
 8     <style>
 9         #box{
10             width:400px;
11             margin: 0 auto;
12         }
13         #div1{
14             width:100px;
15             height:100px;
16             background: red;
17         }
18     </style>
19 </head>
20 <body>
21     <div id="box">
22         <input type="button" value="按钮" @click="toggle">
23         <div id="div1" class="animated" v-show="bSign" transition="bounce"></div>
24     </div>
25 
26     <script>
27         new Vue({
28             el:'#box',
29             data:{
30                 bSign:true
31             },
32             methods:{
33                 toggle(){
34                     this.bSign=!this.bSign;
35                 }
36             },
37             transitions:{ //定义所有动画名称
38                 bounce:{
39                     enterClass:'zoomInLeft',
40                     leaveClass:'zoomOutRight'
41                 }
42             }
43         });
44     </script>
45 </body>
46 </html>

 

posted @ 2017-03-11 21:05  夏至未至~  阅读(6590)  评论(0编辑  收藏  举报