0
votes

VUEJS V-BIND: Tapez sur l'élément d'entrée ne fonctionne pas sans fonctionner lors de l'utilisation de type comme nom de propriété

Code:

p>

<!DOCTYPE html>
<html>
<head>
  <title>My first Vue app</title>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
</head>
<body>
  <div id="app">
      <x :type="type"></x>
  </div>

  <script>
     Vue.component('x', {
         props    : ['type'],
         template : '<input>'
     });

     const x = new Vue({
         el   : '#app',
         data : {
             type : `password`,
         },
     })
  </script>
</body>
</html>


0 commentaires

4 Réponses :


2
votes

Vous devez spécifier explicitement spécifier Type ProP sur Modèle:

Vue.component('x', {
     props    : ['type'],
     template : '<input :type="type">'
});


0 commentaires

0
votes

Essayez avec:

p>

<!DOCTYPE html>
<html>
<head>
  <title>My first Vue app</title>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
</head>
<body>
  <div id="app">
      <x :type="type"></x>
  </div>

  <script>
     Vue.component('x', {
         props    : ['type'],
         template : `<input :type="type">`
     });

     const x = new Vue({
         el   : '#app',
         data : {
             type : `password`,
         },
     })
  </script>
</body>
</html>


0 commentaires

0
votes

Vous avez passé le type code> code> accessoire mais n'a pas marié dans le modèle. Essayez un peu le code suivant

p>

<!DOCTYPE html>
<html>
<head>
    <title>My first Vue app</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
</head>
<body>
<div id="app">
    <x :type="type"></x>
</div>
</body>
</html>


2 commentaires

Je suis confus pourquoi je dois lier deux fois, une fois dans vue.commonent , pouvez-vous s'il vous plaît éclairer moi ?


Vous n'êtes pas contraignant deux fois. Dans Vous ne faites que passer le type à x x (peut prendre en compte une application de fonction comme x ({ Type: 'Type'})). Dans x Modèle du composant Vous êtes liant . Pour plus, voir Vuejs.org/v2/Guide/Components-Props.html



2
votes

Depuis que vous avez défini type code> en tant que prop, il ne sera pas appliqué automatiquement à l'élément racine. Vous devez le lier dans votre modèle:

Vue.component('x', {
  props    : [],
  template : '<input>'
});


2 commentaires

Est-il possible de se lier une fois en composant ou dois-je le faire en composant et élément racinaire?


Le point d'accessoires est-il permettant de transmettre certaines données à un composant puis que ce composant peut choisir de faire ce qu'il veut avec ces données, dans votre cas, vous souhaitez l'affecter à l'attribut de type sur l'élément racine. Cela dépend donc de ce que vous voulez faire. Typiquement, vous devez toujours le lier deux fois, mais dans le deuxième exemple de ma réponse, vous n'avez pas besoin de faire quoi que ce soit chez l'enfant.