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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM