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