如果你想在某個組件的根元素上綁定事件,直接使用 @click=''function' 是不生效的,我們可以添加.native修飾符 @click.native=''function'',請看以下demo:
實現的功能是點擊 <a-com></a-com>的時候打印 1
1.父組件:
<template> <div> 首頁 組件A:<a-com @click='warpClick'></a-com> </div> </template> <script> import aCom from '../components/comA.vue' export default{ components:{ 'a-com':aCom }, methods:{ warpClick(){ console.log(1); } } } </script> <style> </style>
2.子組件:
<template> <div class="box-a"> 組件A的內容 </div> </template> <script> </script> <style> .box-a{ height: 100px; width: 300px; background: lavender; } </style>
結果:控制台無打印
此時修改 為 <a-com @click.native='warpClick'></a-com>
控制台打印結果:
當然,在實際項目中也會遇到類似的問題,項目中遇到了iview插件庫的側邊導航欄的點擊問題,點擊每一個option的時候綁定的click事件不生效,代碼如下:
<template> <div> <Menu active-name="1-2" :open-names="['1']"> <Submenu name="1"> <template slot="title"><Icon type="ios-analytics" />Navigation One</template> <MenuItem name="1-1" @click='itemClick'>Option 1</MenuItem> <MenuItem name="1-2">Option 2</MenuItem> <MenuItem name="1-3">Option 3</MenuItem> <MenuItem name="1-4">Option 4</MenuItem> </Submenu> </Menu> </div> </template> <script> export default{ data(){ return{ theme2: 'light' } }, methods:{ itemClick(){ console.log(1); } } } </script> <style> </style>
此時控制台沒有打印結果:
修改每一項的option代碼為: <MenuItem name="1-1" @click.native='itemClick'>Option 1</MenuItem>
此時控制台打印結果:1