javascript-如何摆脱输入值的问题?

前端之家收集整理的这篇文章主要介绍了javascript-如何摆脱输入值的问题? 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有post.title和post.body的值,我需要在更改文本输入中的值后将其保存在数据中,以便以后可以使用这些新值供用户菜单上写入(PUT请求) API.我该如何实现?

Screenshot the of the app

这是我的代码-

<template>
    <div id="app">
        <input type="text" v-model="createTitle" />
        <input type="text" v-model="createBody" />
        <button @click="addPost()">AddPost</button>
        <ul>
            <li v-for="(post,index) of posts">
                <p>{{ post.title }}</p>
                <p>{{ post.body }}</p>
                <button @click="deleteData(index,post.id)">Delete</button>
                <button @click="visiblePostID = post.id">
                    Изменить
                </button>
                <transition v-if="visiblePostID === post.id">
                    <p><input :value="post.title"><br><input :value="post.body">
                        <button type="button" @click="changePost(post.id,post.title,post.body)">Применить</button></p>
                </transition>
            </li>
        </ul>
    </div>
</template>
<script>
import axios from 'axios';

export default {
    name: 'app',data() {

        return {
            posts: [],createTitle: '',createBody: '',visiblePostID: '',}
    },changePost(id,title,body) {
        axios.put('http://jsonplaceholder.typicode.com/posts/' + id,{
            title: title,body: body
        })
    }
}
</script>
最佳答案
添加到@Riddhi的答案中,您可以在带有临时变量的那些输入上使用v-model,以便在确认PUT请求成功之前不修改模型:

>添加临时数据属性以保存< input>模板中的值:

// template
<transition v-if="visiblePostID === post.id">
  <input v-model="tmpTitle" />
  <input v-model="tmpBody" />
</transition>

// script
data() {
  return {
    tmpTitle: '',tmpBody: ''
  }
}

>用一种方法(名为editPost())替换编辑按钮的处理程序,并将当前帖子的ID,标题和正文传递给该方法,这些信息将存储在上面声明的临时数据属性中:

// template
<button @click="editPost(post.id,post.body)">
  Изменить
</button>

// script
methods: {
  editPost(id,body) {
    this.tmpTitle = title;
    this.tmpBody = body;
    this.visiblePostID = id;
  }
}

>更新changePost()也可以获取当前帖子,一旦PUT请求成功,它将使用临时数据属性进行更新.

// template
<button type="button" @click="changePost(post,post.id,tmpTitle,tmpBody)">
  Применить
</button>

// script
methods: {
  async changePost(post,id,body) {
    const { status } = await axios.put("https://jsonplaceholder.typicode.com/posts/" + id,{ title: title,body: body });
    if (status === 200 /* HTTP OK */) {
      post.title = title;
      post.body = body;
    }
  }
}

demo

原文链接:https://www.f2er.com/js/531196.html

猜你在找的JavaScript相关文章