我是比较新手,期待VUER们能给予我前进的力量,我遇到了一个问题,两天了都查不多解决办法这是我写的子组件代码:
Vue.component('list-ol',{
props:['name_en','name_cn'],
created:function(){
},
template:`
<li class="li-catalog pull-left">{{ name_cn }} {{ name_en }}
<span v-on:click="$emit('pronouce', name_en)" class="glyphicon glyphicon glyphicon-headphones headphone-icon"></span></li>
`
});
var app = new Vue({
el:'#app',
data:{
catalogList:[],
level:''
},
created: function(){
this.getCatalogList();
this.levelHandler();
},
methods:{
// word由$emit回调
// vm.$emit( eventName, […args] )
// 参数:
// {string} eventName
// [...args]
// 触发当前实例上的事件。附加参数都会传给监听器回调。
pronouce:function(word){
pronouceIt(word);
},
levelHandler:function(level){
//Vue.set(this,'level',lvl);
//alert(level);
},
getCatalogList:function(event){
var componentObj = this;//In case of 'this' will be pointed to Jquery object
//题外话:其中混入了JQUERY的AJAX方法,在这个过程中也花了两三天解决把这个JSON传到VUE中。。不知道有没有更好的办法解决这个问题?
$.getJSON('getcataloglist.php', {act: 'fetchcatalog',level:'1'}, function(json, textStatus) {
Vue.set(componentObj,'catalogList',json);
});
}
}
});
这是HTML的 COMPONENT:
<level-tip **level='1'**></level-tip>
<ol>
<list-ol v-on:pronouce="pronouce"
v-on:levelHandler ="levelHandler"
v-for="item in catalogList"
v-bind:key="item.Id"
v-bind:name_en="item.name_en"
v-bind:name_cn="item.name_cn"
>
</list-ol>
里面的level=1就是我想达到重复利用这个COMPONENT,只需要改里面的level=2,让这个值传到$.getJSON里进行获取不同的数据块,就可以让我list-ol里展现不同的内容,(这个level=1应该是放在list-ol组件比较好?)一下子问了很多问题,不知道我表述的问题清楚不清楚,谢谢大家
3 回答
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
第一个问题非常感谢,这样的确解决了我的痛点,请问这个问题是属于作用域问题吗?
level=1 是放在list-ol里。我是想着组件不是可以重复利用嘛,我就想着是是这样来调用我不同的板块:
<list-ol level=1></list-ol>
<list-ol level=2></list-ol>
<list-ol level=3></list-ol>
这样来调用我自己设定不同LEVEL的数据。
PS,怎么能让我这个需求能结合你所说的通用组件?
- 3 回答
- 0 关注
- 525 浏览
添加回答
举报
0/150
提交
取消