0
votes

Pourquoi la vieille valeur n'est-elle pas transmise à la composante VUE?

Pourquoi la valeur antérieure n'est-elle pas transmise à la composante VUE?

passa une valeur ancienne passée ici p>

p>

<template>
    <div>
        <input
            type="text"
            autocomplete="off"
            v-model="query"
            v-on:keyup="autoComplete"
            class="form-control js-region-name"
            name="regionName"
            value=""
        >
        <input
            type="hidden"
            class="form-control js-region-id"
            name="regionId"
            value="enteredRegion">
        <div class="panel-footer" v-if="results.length">
            <ul class="list-group select-region">
                <li class="list-group-item list-region" v-for="result in results" v-on:click="selectRegion(result)">
                    {{ result.name }}
                </li>
            </ul>
        </div>
    </div>
</template>

<script>
    export default {
        data() {
            return {
                results: [],
                query: '',
            }
        },
        methods: {
            autoComplete() {
                this.results = [];
                if(this.query.length > 2){
                    axios.get('/api/regions',{params: {_limit: 2, query: this.query}}).then(response => {
                        this.results = response.data;
                    });
                }
            },
            selectRegion(result) {
                let inputWithRegionName = document.querySelector('.js-region-name');
                let inputWithRegionId = document.querySelector('.js-region-id');
                let listRegions = document.querySelector('.panel-footer');

                inputWithRegionName.value = result.name;
                inputWithRegionId.value = result.id;
                listRegions.hidden = true;
            }
        }
    }
</script>


1 commentaires

Parce que vous devez définir accessoires ? Lisez les documents de Vue avant de passer à cette question


3 Réponses :


1
votes

La syntaxe de Mustache est d'interpoler du texte, de ne pas passer des accessoires.

Pour passer des accessoires ou des attributs de réglage aux composants enfants (y compris des éléments HTML natifs), vous devez utiliser V-BIND code> directive (code> DOC ). P>

Code> L'élément est bon de se souvenir de cette règle. p> xxx pré>

Ensuite, votre code doit ressembler à ceci: p>

<autocomplete-region-component :query="json_encode(old('regionName'))"> 
</autocomplete-region-component>


1 commentaires

Comme @flame a signalé, vous devez également définir l'option apps du composant qui reçoive les accessoires ( DOC ).



2
votes

Lorsque vous créez un composant (comme si vous avez avec code>, si vous souhaitez transmettre des valeurs à partir de son parent, vous devez définir l'accessoire au niveau du composant . Donc, dans votre script, ajoutez une propriété accessoires code> comme: xxx pré>

maintenant dans votre composant de composant de région autocomplete-région, vous pouvez utiliser la valeur de la requête comme ceci.Quisery code> comme vous l'attendez. p>

Dans votre étiquette de composant, vous n'utilisez pas les étiquettes de moustache pour réussir la valeur, vous allez simplement réussir JavaScript normal. Je recommanderais également. Ne pas encoder le JSON à ce moment-là. Vous pouvez toujours l'encoder dans le composant si vous aviez besoin de. P>

<autocomplete-region-component :query="old('regionName')"> 
</autocomplete-region-component>


2 commentaires

Droite, vous ne pouvez pas passer à un accessoire avec le même nom que la propriété de données. Renommez votre propriété de données locale, ou la prop.


Un exemple peut-il paraître s'il vous plaît, sinon vous ne pouvez pas comprendre la syntaxe. Je mettez à jour le code VUE dans la poste principale



1
votes

Vous devez définir un accessoire et définir les données sur ce transfert

lorsque vous passez des données dans une étiquette de composant via le V-Bind sténographie : ces données sont appelés accessoires et doivent être définis comme tels

Vue désactive les accessoires mutatings passés du parent chez l'enfant, vous devez effectuer une copie locale de ce support dans l'objet de données réactif < Pré> xxx

supposant une vue de lame comme si xxx

et des itinéraires comme xxx

C'est ce que vous obtiendriez si des données non valides sont publiées Entrez la description de l'image ici


1 commentaires

Merci pour l'explication! Mais pourquoi l'ancienne valeur n'est pas affichée? Après la soumission et la validation de formulaire non terminée