2019-05-16

vue中計時器

在mounted中設置計時器setInterval,在beforeDestroy中解除計數(shù)器clearInterval;
var timer = setInterval(function(){ 修改數(shù)據(jù) },500);
clearInterval(timer);

   mounted(){
   var _this = this; //聲明一個變量,指向vue實例,保證作用域一樣;
   _this.name = '你好啊vue項目';   
   this.timer = setInterval(function(){
     _this.time = new Date().getFullYear() +'年'+ (new Date().getMonth()+1) +'月'+ new Date().getDate() +'日'+ new Date().getHours() +':'+ new Date().getMinutes() +':'+ new Date().getSeconds() ;
   },500);
 },
 beforeDestroy(){
   if(this.timer){
     clearInterval(this.timer)
   }
 },

三元運算

條件判斷?是:否

<span>{{number === 10? number : '數(shù)字不是10'}}</span>

在vue里{{ }}支持表達式和綁定數(shù)值,如果想要連同大括號顯示,使用v-pre,則標簽里的內(nèi)容就不會進行編譯,直接輸出

<span v-pre>{{這里的內(nèi)容是不會被編譯的}}</span>

輸出結果:
{{這里的內(nèi)容是不會被編譯的}}

過濾器filter

用途:用于對數(shù)據(jù)進行格式化處理,這些處理規(guī)則是自定義的,在vue實例里添加filter選項;過濾器主要用于簡單的數(shù)據(jù)轉換,更復雜的數(shù)據(jù)轉換使用計算屬性
{{數(shù)值 | 過濾器名字}}
filters:{過濾器名字1:function(value){數(shù)值轉換;return 整理好的數(shù)值}}

<p>時間毫秒值{{ time | modify}}</p>
filters:{
    modify:function(value){    //value是過濾器接受的第一個參數(shù),傳值的話則是第二個第三個參數(shù);
      return new Date().getTime()
    }
  }, 

v-on/v-bind

v-bind基本用途:更新HTML元素的屬性,如img的src或者id,class等等,數(shù)據(jù)在data選項中聲明
v-bind還可以綁定樣式名稱class和內(nèi)聯(lián)樣式style

v-bind

1.v-bind更新元素屬性;

 <a v-bind:href="bdurl">百度鏈接</a>

data () {
    return {
      bdurl:'http://baidu.com'
    }
  },

2.v-bind綁定class,需要依賴判斷isA是否為true;當表達式冗長時優(yōu)先想到計算屬性
格式: :class="{'class類名':數(shù)值判斷條件}"

<span :class="{'coo':isA}">{{prices}}</span>
//多個class,在條件成立時渲染
<span :class="{'coo':isA,'coo1':isB}">{{prices}}</span>

點擊切換樣式

<span :class="[isA ? 'coo' :'coo1']" @click='isA = !isA'>{{prices}}</span>

3.v-bind綁定內(nèi)聯(lián)樣式style,和綁定class一樣,為了代碼維護,多用在data或者i算屬性中

<p :style='styles'>北京時間:{{time}}</p> 
data () {
    return {
      styles:{
        fontSize:45+'px',
        color:'#f00'
      },
      
    }
  },

應用多個樣式對象時,使用數(shù)組;實際,應用樣式數(shù)組并不是很多,因為都會寫在一個對象里,更多的使用計算屬性

<p :style='[styles,style1]'>北京時間:{{time}}</p> 

v-on基本用途:綁定事件監(jiān)聽器,表達式可以是函數(shù),也可以是表達式,此時函數(shù)中的this指向vue實例.所以不可以使用箭頭函數(shù)..為了方便數(shù)據(jù)維護,最好使用函數(shù)
v-on綁定的事件除了click,還有dbclick/keyup/mousemove

<h1 v-on:click='dianji()'>{{ msg }}</h1>
methods:{
    dianji:function(){
      this.msg = '點擊切換信息'
    }
  }

語法糖
在不影響功能的情況下,用更簡單的方法實現(xiàn)。也可以說是縮寫
v-on -------@;
v-bind------: ;

計算屬性

模板中的數(shù)據(jù)或表達式過于冗長或者邏輯復雜時,需要使用計算屬性.此時的數(shù)據(jù)不需要再data中聲明
所有的計算屬性都是以函數(shù)的形式,寫在vue實例里的computed,最終返回數(shù)據(jù)結果

計算屬性還可以依賴多個vue實例,只要最后返回數(shù)據(jù)
在函數(shù)的最后返回數(shù)據(jù)
eg;購物車里的商品價格總和

data () {
    return {
      bag1:[
        {
          name:'手機1',
          price:1800,
          num:2
        },
        {
          name:'手機2',
          price:3200,
          num:1
        },
        {
          name:'手機3',
          price:7900,
          num:2
        }
      ],
      bag2:[
        {
          name:'電腦1',
          price:18000,
          num:2
        },
        {
          name:'電腦2',
          price:32000,
          num:1
        },
        {
          name:'電腦3',
          price:79000,
          num:2
        }
      ]
    }
  }
computed:{
    prices:function(){
      var prices = 0;
      for(var i=0; i<this.bag1.length;i++){
        prices += this.bag1[i].price*this.bag1[i].num;       
      }
      for(var i=0; i<this.bag2.length;i++){
        prices += this.bag2[i].price*this.bag2[i].num;       
      }
      return prices;
    }
  }

上面使用的都是計算屬性的默認使用方法,每個計算屬性都有setter和getter。但是一般情況i下不會使用setter。getter用于讀取數(shù)據(jù),當手動修改計算屬性的值時,就會觸發(fā)setter函數(shù)。
計算屬性兩個實用的小技巧:1.計算屬性可以依賴計算屬性;2.計算屬性還可以依賴其他vue實例的數(shù)據(jù);在組件化開發(fā)中經(jīng)常使用

var app1= new Vue({
   el:'#app1',
   data(){
      return {
          text:123456
     }
  }
})
//組件2依賴了組件1的數(shù)值,當組件1修改數(shù)據(jù)值,組件2會發(fā)生相應的變化
var app2= new Vue({
   el:'#app2',
   computed:{
        reversedText: function(){return  appl.text.split (',') . reverse() . join( ',')}
   }
})

調用methods方法和計算屬性可能實現(xiàn)的效果時相同的,但是計算屬性時依賴緩存的,一個計算屬性所依賴的數(shù)據(jù)發(fā)生變化時,它才會重新取值。而methods(),只要重新重新渲染就會被調用。在處理大量數(shù)據(jù)時,使用計算屬性還是比較好的,除非你不需要緩存

內(nèi)置指令

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對于 Vue 1.0 印象不深的內(nèi)容。關于...
    云之外閱讀 5,187評論 0 29
  • vue概述 在官方文檔中,有一句話對Vue的定位說的很明確:Vue.js 的核心是一個允許采用簡潔的模板語法來聲明...
    li4065閱讀 7,627評論 0 25
  • 一、了解Vue.js 1.1.1 Vue.js是什么? 簡單小巧、漸進式、功能強大的技術棧 1.1.2 為什么學習...
    蔡華鵬閱讀 3,510評論 0 3
  • Vue 實例 屬性和方法 每個 Vue 實例都會代理其 data 對象里所有的屬性:var data = { a:...
    云之外閱讀 2,389評論 0 6
  • 一:什么是閉包?閉包的用處? (1)閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。在本質上,閉包就 是將函數(shù)內(nèi)部和函數(shù)外...
    xuguibin閱讀 10,068評論 1 52

友情鏈接更多精彩內(nèi)容