为了账号安全,请及时绑定邮箱和手机立即绑定

VUE子组件中的值如何提交给父组件,以进行AJAX请求不同数据?

VUE子组件中的值如何提交给父组件,以进行AJAX请求不同数据?

PHP
波斯汪 2019-03-09 18:38:19
我是比较新手,期待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,怎么能让我这个需求能结合你所说的通用组件?

查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 525 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信