鍍金池/ 問答/HTML/ vue子組件實例上不能觸發(fā)click事件?

vue子組件實例上不能觸發(fā)click事件?

在下面的代碼(只是一部分代碼)中,在sss按鍵能觸發(fā)click事件函數(shù)test,但是在nav-item組件上的click事件不能夠觸發(fā)???查閱了一些資料,也一直沒找到答案

但是有一個解決辦法就是在子組件內(nèi)部拋出一個自定義事件,然后在組件實例上接收該事件,這樣可以觸發(fā)自定義的事件,但是下面這樣使用click事件不能觸發(fā)就搞不懂,所以想請教一下大家

<div id="app" class="content">

        <div class="nav bg_red">
            <div class="nav_items">
                <nav-item v-for="item in nav_item_title" v-bind:key="item" v-bind:itemname="item" v-bind:class="['item-label','bg_red',{bg_white:current_page==item}]" v-on:click="test"></nav-item>
            </div>
            <button class="item-label bg_red" v-on:click="test">ssss</button>
        </div>
        <component v-bind:is="current_component"></component>
    </div>
    <script>
    Vue.component("nav-item",{
            props:['itemname'],
            template:"<button>{{itemname}}</button>",
            methods:{
                togg:function(){
                    this.$emit("toggle",this.itemname)
                },
                battle:function(){
                    alert(this.itemname);
                }
            }
        });
    var app=new Vue({
            el:'#app',
            data:{
                nav_item_title:['page1','page2','page3','page4'],
                current_page:'page1'
            },
            computed:{
                current_component:function(){
                    return "tab-"+this.current_page;
                }
            },
            methods:{
                activeitem:function(name){
                    this.current_page=name;
                },
                test:function(){
                    alert("this");
                }
            }
        });
        
        
        
        
回答
編輯回答
陪妳哭

<button @click.native="test">按鈕</button>

試一下 事件修飾服

2017年1月23日 16:06
編輯回答
孤影

nav-item不是原生dom元素,沒有click事件吧,需要把click作為props傳遞給內(nèi)部元素,在button上注冊click事件,調(diào)用傳入的test方法

2017年11月23日 21:47
編輯回答
懶洋洋

子組件通過emit方式向父組件傳遞事件,父組件不是通過@click調(diào)用,你這里應(yīng)該是@toggle="test"

2017年7月20日 02:30
編輯回答
司令

由于nav-item為自定義組件的實例,使用on直接綁定事件只能綁定自定義的事件,即在組件內(nèi)部使用emit('name')的方式拋出的事件,如果在子組件實例上綁定原生的事件,需要使用.native的事件修飾符。因為button不是自定義組件,所以可以直接綁定原生事件,也不用一樓所說那樣傳入?yún)?shù)

2018年7月15日 05:19