鍍金池/ 問答/HTML/ vue v-on綁定事件時函數(shù)名加與不加括號的區(qū)別

vue v-on綁定事件時函數(shù)名加與不加括號的區(qū)別

在原生js中調(diào)用函數(shù)是需要加括號的,為什么vue中v-on綁定的事件都沒加,這里是vue底層做了封裝嗎,我不是太明白這一點,有沒有人可以舉例子說明一下嗎

回答
編輯回答
陪她鬧

v-on的值分倆種情況:

簡單取值路徑或者函數(shù)表達式

簡單路徑例如:

  • v-on="a"
  • v-on="a.b"
  • v-on="obj.foo"

函數(shù)表達式如:

  • v-on="() => console.log(1)"
  • v-on="function() { console.log(1) }"

滿足這個條件的值會被處理成函數(shù)調(diào)用, 也即是說, 你不用提供圓括號.

  • a 處理為 a()
  • a.b 處理為 a.b()
  • obj.foo 處理為 obj.foo()
  • () => console.log(1) 處理為 (() => console.log(1))()
  • function() { console.log(1) } 處理為 (function() { console.log(1) })()

非簡單取值路徑也非函數(shù)表達式

除去上面提到的兩種情況, 其他情況下 v-on 的值會被包裹進一個函數(shù)聲明內(nèi).

  • a ? b : c 處理為 function($event) { a ? b : c }
  • b($event.target.value) 處理為 function($event) { b($event.target.value) }

這就是為什么你可以使用 $event 變量的原因.

2017年11月22日 03:19
編輯回答
好難瘦

區(qū)別在于傳參數(shù)的時候

2017年9月29日 20:18