Trong Vue.js Tôi lấy một số dữ liệu của một json-file như thế này:Vue.js không thể truy cập vào các thuộc tính lồng nhau của dữ liệu đối tượng
export default {
data() {
return {
data: []
}
},
created() {
this.fetchData();
},
methods: {
fetchData() {
$.getJSON('data/api.json', function(el) {
this.data = el;
}.bind(this)),
}
}
}
Dữ liệu lấy có cấu trúc sau:
{
time: '17:00',
pick: {
box: {
single: 1,
multi: 2
}
}
}
Khi tôi cố gắng truy cập vào {{ data.pick.box }} or {{ data.pick.box.single }}
trong thành phần của tôi, tôi luôn nhận được thông báo lỗi này:
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)
là lại bất kỳ hạn chế nào để truy cập vào các đối tượng lồng nhau sâu? Ví dụ: khi tôi gọi {{ data }}
, tôi nhận được toàn bộ cấu trúc dữ liệu được hiển thị dưới dạng chuỗi chính xác.
Như đã đề cập bởi Nora, đây là fiddle: jsfiddle
Can bạn thiết lập một jsfiddle? – Nora
Khi hiển thị lần đầu tiên 'dữ liệu' là' [] 'và không có bất kỳ thuộc tính' .pick.box' nào. – sobolevn
Bạn có thể sử dụng [v-if] (https://vuejs.org/v2/guide/conditional.html#v-if) như tôi đã đề cập trong câu trả lời của tôi, nếu bạn không muốn sử dụng thêm một biến. – Saurabh