@click没有效果?

Vue.component('set-menu',{
        template:'<ul><li v-for="item in ht" v-bind:data-id="item.id"><div @click="_click"><i class="s-font" v-bind:class="item.iconClass"></i>{{item.name}}</div><ul v-if="item.oth"><li v-for="items in item.oth"><i class="s-font" v-bind:class="items.iconClass"></i>{{items.name}}</li></ul></li></ul>',
        data:function(){
            var datas;
            $.ajax({
                type:"get",
                url:"data.json",
                async:false,
                cache:false,
                success:function(data){
                    datas=data.sites;
                }
            });
            console.log(datas)
            return {ht:datas}
        },
        methods:{
            _click:function(){
                this.$emit('click',function(){
                    alert(123)
                })
            }
        }
    })
阅读 2k
1 个回答

你可以好好看看你写的这个@click函数,他是触发了这个'set-menu'组件的click事件,并且把一个包含了alert操作的匿名函数当做了参数传给了'set-menu'组件的click事件方法,所以这个要看'set-menu' 上的是click事件怎么处理的,是不是运行了这个传递过去的匿名函数,
可以修改_click函数直接alert就好,不是出发set-menu的click事件就好了。
小建议:组件中的异步操作,最好还是放到生命周期函数里面执行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题