Изменить параграф на Input vue.js

Подскажите пожалуйста, как при клике к примеру на <p>Нажми меня</p> превратить его в <input>Нажми меня</input> и при клике на Enter или фокуса вывести сообщение в консоль ?

У меня есть вывод значений из базы Имя, Фамилия,Отчество для отображения пользователю,

<div class="col-md-8"> 
  <div class="card-body"> 
    <h4 class="card-title">{{ api.attributes.surname }}</h4> 
    <h4 class="card-title">{{ api.attributes.name }}</h4> 
  </div> 
</div> 

Вот хотелось бы при клике на имя иметь сразу же возможность редактировании этого поля и записи его в базу


Ответы (1 шт):

Автор решения: lazyproger

Вот пример того как это можно сделать с одним полем:

new Vue({
  el: "#app",
  data: {
    first_name: 'First Name',
    firstNameEdit: false,
  },
  methods: {
  	submit(){
    	console.log(this.first_name);
    },
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id="app">
  <div v-if="firstNameEdit">
      <input v-model="first_name" v-on:keyup.enter="submit" v-on:keyup.escape="firstNameEdit = false">
  </div>
  <div v-else v-on:click="firstNameEdit = true">
    {{first_name}}
  </div>
</div>

При клике на h1 мы переключаем логическую переменную, которая отвечает что мы показываем (h1 или input)

При нажатии на enter когда input в фокусе, сработает метод submit

При нажатии на escape вы можете закрыть input

→ Ссылка