Comment continuez-vous à passer des objets comme accessoires lors d'une vue? J'imagine que ce serait une tâche simple mais apparemment pas.
J'ai le code suivant sur un fichier .vue:
`
<template>
<div id="scatter"></div>
</template>
<script>
export default {
props: {
data: {
type: Object,
default: () => ({})
}
},
mounted () {
console.log(this.data)
}
}
</script>
`
Sur html, j'essaie de transmettre les accessoires data
comme suit:
<component :data="{x:1}"></component>
Lorsque j'essaie de le connecter à la console, le résultat n'est qu'un objet observateur vide.
Je crois que le problème se situe ailleurs dans votre code, car le fait de passer un objet comme accessoire est aussi simple que vous l'imaginez:
// register the component
Vue.component('component', {
props: {
data: {
type: Object
}
},
template: '<div>Data: {{data}}</div>',
mounted: function () {
console.log(this.data)
}
})
new Vue({
el: '#example'
})
HTML:
<div id="example">
<component :data="{x:1}"></component>
</div>
Voici un violon le montrant en action: https://jsfiddle.net/tk9omyae/
Edit: Après ma réponse initiale et la création d’un JsFiddle, je ne sais pas pourquoi le comportement que vous avez décrit se produit. Cela fonctionne lorsqu'il est réduit au cas d'utilisation:
<script>
export default {
props: {
ok: {
type: Object,
default: () => ({}),
},
data: {
type: Object,
default: () => ({})
}
}
},
mounted () {
console.log(this.data) // {x:1}
console.log(this.ok) // {x:1}
}
}
</script>
Et le HTML:
<component :ok="{x:1}" :data="{x:1}"></component>
Voici un JsFiddle qui illustre le comportement: https://jsfiddle.net/mqkpocjh/
v-bind="yourObject"
Devrait faire le <my-component v-bind="yourObject"><my-component>
Pas sûr de <component></component>
. Toujours en train de creuser dans Vue. Essayez de nous le faire savoir.