【发布时间】:2017-05-16 09:56:53
【问题描述】:
在 Vue.js 中,我获取 json 文件的一些数据,如下所示:
export default {
data () {
return {
data: []
}
},
created () {
this.fetchData();
},
methods: {
fetchData () {
$.getJSON('data/api.json', function(el) {
this.data = el;
}.bind(this)),
}
}
}
获取的数据结构如下:
{
time: '17:00',
pick: {
box: {
single: 1,
multi: 2
}
}
}
当我尝试在我的组件中访问 {{ data.pick.box }} or {{ data.pick.box.single }} 时,我总是收到以下错误消息:
vue.js?3de6:2963 Uncaught TypeError: Cannot read property 'box' of undefined
at Proxy.render (eval at <anonymous> (app.js:126), <anonymous>:4:46)
at VueComponent.Vue._render (eval at <anonymous> (app.js:139), <anonymous>:2954:22)
at VueComponent.eval (eval at <anonymous> (app.js:139), <anonymous>:2191:21)
at Watcher.get (eval at <anonymous> (app.js:139), <anonymous>:1656:27)
at new Watcher (eval at <anonymous> (app.js:139), <anonymous>:1648:12)
at VueComponent.Vue._mount (eval at <anonymous> (app.js:139), <anonymous>:2190:19)
at VueComponent.Vue$3.$mount (eval at <anonymous> (app.js:139), <anonymous>:5978:15)
at VueComponent.Vue$3.$mount (eval at <anonymous> (app.js:139), <anonymous>:8305:16)
at init (eval at <anonymous> (app.js:139), <anonymous>:2502:11)
at createComponent (eval at <anonymous> (app.js:139), <anonymous>:4052:9)
访问深层嵌套对象是否有任何限制?例如,当我调用{{ data }} 时,我将整个数据结构正确显示为字符串。
正如 Nora 所说,这里是小提琴:jsfiddle
【问题讨论】:
-
你能设置一个 jsfiddle 吗?
-
第一次渲染时
data是[],并且没有任何.pick.box属性。 -
如果您不想使用额外的变量,可以使用我在回答中提到的v-if。
标签: javascript json vue.js vue-component