0
votes

Vuejs accessoires non lu lors de la définition de la valeur initiale dans les données

J'ai beaucoup joué ces derniers temps sur la manière de définir la valeur initiale dans la propriété de données locale. J'utilise Laravel avec Vue.Js

J'ai ce code ci-dessous dans mon composant P>

order_date: this.dates.order_date


4 commentaires

Êtes-vous sûr que vous n'écrasez pas data.order_date dans créé ou monté hameçons? Pouvez-vous essayer de définir ce data.order_date sur string "foo" pour vérifier si cela persiste?


J'ai enlevé monté et créé toujours la même chose. Les accessoires fonctionneront dans les modèles lorsque cela est appelé directement, non défini dans le composant.


Veuillez essayer ordre_date: this.dates.order_date dans monté () , il devrait fonctionner.


Comment remplissez-vous l'accessoire? Parce que je pense que l'accessoire est peuplé après que Vue ait été monté, c'est pourquoi il ne reçoit pas la valeur de vos données.


6 Réponses :


0
votes

Que diriez-vous d'utiliser calculé à la place?

    props: [
        'user',
        'dates'
    ],
    data() {
        return {
            bloodTypes: {},
            bloodComponents: {}
        }
    },
    computed: {
        data: function() {
            return {
                order_date: this.dates.order_date,
                order_details: [] <= should be changed to something dynamically changed object
            }
        }
    }


4 commentaires

Il retourne toujours vide et non défini.


Pourquoi initiez-vous des objets d'accessoires? Essayez d'utiliser le tableau pour les accessoires.


Vuejs.org/v2/Guide/Components-props.html# Passer-an-objet j'ai suivi cela dans des objets qui passe


Le type et la valeur par défaut peuvent être définis comme objet



0
votes

Le problème est que votre accesses code> ne sont pas déclarés correctement.

props: {
  user: {
    type: String,
    default: ''
  },
  dates: {
    type: Object,
    default: () => ({})
  }
},


0 commentaires

1
votes

Essayez ceci:

watch: {
  dates: {
    handler(val){
     this.data.order_date = val.order_date;
  },
  deep: true
 }
}


0 commentaires


1
votes

J'ai finalement résolu cela avec, j'ai changé de nom de variable afin que je ne sois pas confus. Il semble que vous ayez besoin de mettre des accessoires sous Watch afin de le manipuler.

props: [ 'user','blood_components', 'blood_types', 'current_date'],
        data() {
            return {
                list: {
                    order_date: '',
                }
            }
        },
        watch:{
            current_date: function() {
                let self = this
                self.list.order_date = this.current_date
            }
        },


0 commentaires

3
votes

Un peu en retard à la fête mais je pensais que je partagerais ma solution de contournement lorsque vous travaillez avec ASYNC Data:

props: ['initialCounter'],
data: function () {
    return {
       counter: this.initialCounter
    }
}


0 commentaires