vue 使用tab组件切换读取本地json数据
我是参考 http://blog.csdn.net/qq_16559... 实现Tab切换
我是新手,想向大家请教两个问题:
目前代码报错,read property 'push' of undefined name is not defined,不知道是不是this和self的地方处理的不对
另外,考虑到a.vue和b.vue只是读取的json的名称不一样,不知道是否有更合适的办法来重用,代码有不合适或者需要改进的地方,也烦请诸位多多指正。
App.vue 如下:
<template>
<div id="app">
<div class="top">
<ul>
<li @click='tabToggle("a");'>A</li>
<li @click='tabToggle("b");'>B</li>
</ul>
</div>
<div>
<component :is='currentView' keep-alive></component>
</div>
</div>
</template>
<script>
import A from './component/A.vue';
import B from './component/B.vue';
export default {
name: 'app',
data () {
return {
currentView: 'a',
}
},
created: function () {
this.getData();
},
components: {
a: A,
b: B
},
methods: {
tabToggle: function(tabText) {
this.currentView = tabText
}
}
}
</script>
A.vue如下:
<template>
<div id="a">
<h1>{{ name }}</h1>
<h2>{{ desc }}</h2>
<table>
<thead>
<tr>
<td>Name</td>
<td>Status</td>
</tr>
</thead>
<tbody>
<tr v-for="item in itemList" :id="item.id" style="">
<td>{{item.name}}</td>
<td>{{item.after[0].result.status}}</td>
</tr>
</tbody>
</table>
</div>
</template>
<script>
export default {
name: 'a',
data () {
return {
itemList:[],
name,
desc
}
},
created: function () {
this.getData();
},
methods: {
getData:function () {
var self = this;
this.$http.get("data/a.json").then(function (res) {
self.name = res.body[0].name;
self.desc = res.body[0].description;
for(var i= 0,len=res.body[0].elements.length;i<len;i++){
var resultData = res.body[0].elements[i];
self.itemList.push(resultData);
}
})
}
}
}
</script>
非常感谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
报错的原因楼上正解,定义就好了
获取json可以在父组件做:
这样接口就可以重用,然后把接口返回来的数据传给子组件即可。
然后还可以在传一个type,通过type来把接口传回来的数据付给不同的字段,再根据字段判断是否为空而是否继续访问接口,这样两个接口只要访问一次,有数据后再也不用访问,然后担心会子组件有更新json的情况,在原来基础上加上更新的功能传过去即可
props的用法:
父组件 <xxx :aaa="你要的数据"></xxx>
子组件: props: ['aaa']
第一点:
return {
}
这里的写法有问题,这么写相当于return {name: name, desc: desc},所以会报undefined的错。
第二点:既然区别只是读取文件的不同,你可以传入一个props给字组件,在子组件里监听这个props值变化,来决定读取的是哪个json文件