W Vue.js I pobrania części danych o JSON pliku tak:Vue.js nie może uzyskać dostępu do danych z zagnieżdżonych właściwości obiektu
export default {
data() {
return {
data: []
}
},
created() {
this.fetchData();
},
methods: {
fetchData() {
$.getJSON('data/api.json', function(el) {
this.data = el;
}.bind(this)),
}
}
}
Dane pobierane ma następującą strukturę:
{
time: '17:00',
pick: {
box: {
single: 1,
multi: 2
}
}
}
Kiedy próbuję uzyskać dostęp do {{ data.pick.box }} or {{ data.pick.box.single }}
w moim elementu, zawsze się ten komunikat o błędzie:
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)
Czy czy jakiekolwiek ograniczenie dostępu do głęboko zagnieżdżonych obiektów? Kiedy na przykład wywoływam {{ data }}
, wyświetlam całą strukturę danych w postaci ciągu znaków.
Jak wspomniano przez Nora, oto skrzypce: jsfiddle
Can należy skonfigurować jsfiddle? – Nora
Podczas renderowania po raz pierwszy 'data' ma wartość' [] 'i nie ma żadnej właściwości' .pick.box'. – sobolevn
Możesz użyć [v-if] (https://vuejs.org/v2/guide/conditional.html#v-if), o czym wspomniałem w mojej odpowiedzi, jeśli nie chcesz używać jednej dodatkowej zmiennej. – Saurabh