Vue基礎知識之常用屬性和事件修飾符(二)


Vue中的常用選項

  • 1、計算屬性

computed為可以計算的屬性,由get方法和set方法組成,默認調用的是get方法。里面的
計算屬性簡單來說,就是根據數據推算出來的值,當給這個值賦值時可以影響其他值的變化。

<div id="app">
      全選:<input type="checkbox" v‐model="checkAll" > <br>
      <input type="checkbox" v‐for="a in checkList" v‐model="a.selected">
  </div>
  data:{
checkList:[{selected:true},{selected:true},{selected:false}]
  },
  computed:{
   checkAll:{
	set(val){//此處的val代表的就是全選鍵的值。
	
		for(var arr of this.checkList){
            arr.selected = val;
           }
       },
	    get(){
           var obj = this.checkList.find(function (item) {
               return !item.selected
           });
	           return obj?false:true;
       }
	 }
	 msg:function(){return }//默認是get
  }
  • 2、methods

定義一些方法,供組件使用。

  • 3、watch

用於檢測的數據發生改變的api
和computed不同,watch可以夾雜異步邏輯
當一個值發生變化的時候,執行某個動作用watch更加方便。

<div id="app">
      <input type="text" v‐model="msg">
      {{content}}
  </div>
  var vm = new Vue({
     el:'#app',
      data:{
         msg:'hello',
         content:''
      },
      watch:{
          msg:function () {
              this.content = 'waiting...';
              setTimeout(()=> {
                  this.content = 'Hello Mrs Jiang!'
              },2000);
          }
      }
  });//修改msg的值先等待兩秒后再顯示。
  computed適合做復雜邏輯,簡單的只能給watch,當一個值改變觸發某個事件時使用watch;如果是異步,並且有中間過程,用watch。
  • 4、data

每個 Vue 實例都會代理其 data 對象里所有的屬性

var data = { a: 1 }
var vm = new Vue({
    data: data
})
vm.a === data.a   // -> true
vm.a = 2          // 設置屬性也會影響到原始數據
data.a            // -> 2
data.a = 3        // ... 反之亦然
vm.a              // -> 3
注意:只有這些被代理的屬性是響應的。如果在實例創建之后添加新的屬性到實例上,它不會觸發視圖更新

除了 data 屬性, Vue 實例暴露了一些有用的實例屬性與方法。這些屬性與方法都有前綴 $,以便與代理的 data 屬性區分。

var data = { a: 1 }
var vm = new Vue({
  el: '#example',
  data: data
})
vm.$data === data       // -> true
vm.$el === document.getElementById('example') // -> true
vm.$watch('a', function (newVal, oldVal) { // $watch 是一個實例方法
  // 這個回調將在 `vm.a`  改變后調用
})
注意:不要在實例屬性或者回調函數中(如 vm.$watch('a', newVal => this.myMethod()))使用箭頭函數。因為箭頭函數綁定父上下文,所以 this 不會像預想的一樣是 Vue 實例,而是 this.myMethod 未被定義

實例上常用的屬性

  • vm.$el 代表的就是獲取當前的元素,可以直接操作,修改樣式等
  • vm.$data 獲取當前實例上掛載的數據
  • vm.$options 當前實例上自定的屬性
  • vm.$watch 監控數據的變化 vm.$watch('total',function(newVal,oldVal){})//只要是data上的數據或者計算屬性皆可以監控。

事件進階-修飾符

  • 事件處理函數只有純粹的邏輯判斷,不處理DOM實踐的細節,例如:阻止冒泡,默認行為,判斷按鍵

1、事件冒泡(事件不會向上傳遞)

<div @click="say">
    parent
    <div @click.stop="say">child</div>//阻止冒泡
</div>

2、阻止默認事件(不觸發默認事件)

<a href="http://www.baidu.com" @click.prevent="say">百度</a>//阻止默認行為

3、指定元素觸發(不包括子元素)

<a @click.stop.self.prevent="say" href="http://www.baidu.com" style="border: 10px s
olid red">
      <span>2</span>
      <span>1</span>
</a>

4、事件捕獲方式(父->子)

<div @click='say'>parent
	<div @click='say1'>
		child
	</div>
</div>

5、綁定事件一次(觸發后移除事件)

<div @click.once='say'>say</div>

6、.capture事件默認是雙向的,先捕獲,在冒泡

  • 按鍵修飾符,常見的修飾符.enter/.tab/.delete/.esc/.space/.up/.down。。鍵值
<input type='text' @keyup.enter='say'>
注意:'.'后面也可以使用對應鍵值的ASCII碼值

動態綁定類名

  • 動態綁定的class和原生的class可以共存,如果有覆蓋,動態的覆蓋靜態的。

1、對象綁定方式:
:class="{類名:條件,類名:條件}"
如果條件為true,添加樣式;如果條件為false,移除樣式。
2、數組綁定方式:
:class="[data中的數據,"類名",{類名:條件}]"
data:{
data中的數據:“類名”,
}

動態綁定style

1、對象綁定方式:
:style="{屬性名:屬性值}"
2、數組綁定方式:
:style="[data中的數據]"
data:{
data中的數據:{屬性名:屬性值}
}


免責聲明!

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



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