如何将组件数据作为json发送到服务器?

尼克工艺

这是我的设置:

<template>
    <div id="" style="min-height: 100px">
        <template v-for="(block, index) in blockList">
            <component :is="block"></component>
        </template>
    </div>
</template>

<script>
    import TextBlock from './blocks/TextBlock.vue'
    import ImageBlock from './blocks/ImageBlock.vue'

    export default {
        data: function data() {
            return {
                blockList: ['text-block', 'image-block', 'text-block']
            }
        },

        props: {
            blocks: {type: Array}
        },
        // afterMount () {
        //     this.blocks.push(['text-block']);
        // },
        components: {
            TextBlock,
            ImageBlock
        }
    }
</script>

<style lang="scss">

</style>

因此,为了测试一切正常,我手动添加了一些组件:blockList:['text-block','image-block','text-block']

并且所有内容在页面上都可以正常显示。但是,我不会手动添加组件,而是让用户添加它们,并且用户将能够添加任意数量的组件。将会有更多的组件,而目前我正在使用2。

当我向页面添加10个不同的组件并且用户按下“保存”按钮时,如何将这些数据发送到服务器?我不能只是将blockList数组发送到服务器,因为那只是一个字符串数组。

我想做的是跟踪所有已添加的组件,然后按一下按钮,将包含所有组件及其属性的json发送到服务器,例如是否在文本组件中输入了任何文本,或者已将图像上传到图像组件中,我还需要将所有数据也发送到服务器,以便稍后稍后重新加载页面以进行编辑时可以重新创建它。

那么我该如何做为blockList:['text-block','image-block','text-block']不会呢?如何保留一组组件及其所有属性,并通过按一下按钮将其发送到服务器?

伯特

构建您的组件以提供支持v-model更改blockList数据结构,使其看起来像这样:

const blockList = [
  {
    component: "text-block",
    model: null,
    label: "Name"
  },
  {
    component: "text-block",
    model: null,
    label: "Address"
  }
]

请注意,现在的每个项目blockList都有一个,model您可以用来从组件收集数据。然后,使用将组件绑定到模块模型v-model

<component v-for="item in blockList" 
           :is="item.component"
           v-model="item.model"
           :label="item.label"
           :key="item">
</component>

这是一个示例组件实现:

const TextBlock = {
  props:["value", "label"],
  template: `
    <div>
      {{label}}
      <input type="text" @input="$emit('input', $event.target.value)" :value="value">
    </div>
  `
}

现在,中的每个元素都blockList将包含从该组件收集的数据。当您要保存该数据时,请遍历blockList并提取您要提交的数据。

这是一个工作示例

在此示例中,我没有完成提交数据的工作,您可能可以自行解决。我也没有实现ImageBlock组件。我不确定您希望它如何工作。但是遵循相同的模式,您应该能够支持v-modelImageBlock组件并以相同的方式提交数据。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将String数组作为发布数据发送到Web服务器?

如何将多个json对象的数据发送到android中的服务器?

如何将Javascript映射作为参数从闪电组件发送到Apex服务器控制器?

我们如何将画布图像数据作为附件发送到Pharo上的服务器?

如何将JavaScript变量作为$ _FILE发送到PHP服务器

如何将json数据发送到服务器并在android中获得Json响应?

将JSON数据发送到Laravel服务器

如何使用Volley将JSONObject作为表单数据发送到服务器

如何将JSON数据从节点js脚本发送到其他服务器上的HTML文件

如何将2个输入中的数据发送到一个json服务器对象中?

如何将JSON数据发送到Bottle服务器并将值存储在sqlite3中?

如何将json数组与json发送到服务器?

远程Internet服务器如何将数据包发送到本地IP?

如何将HTML表单数据发送到Java http服务器

React 和 NodeJS:如何将数据从服务器发送到客户端?

如何将“数据”和“结束”事件从cURL发送到nodejs的HTTP服务器?

如何将数据从Python异步套接字服务器发送到子进程?

如何将数据从android发送到mysql服务器?

如何将表格数据发送到服务器

如何将所有SQLite数据发送到在线服务器

如何将客户端数据发送到服务器端

如何将数据从服务器发送到Android?

如何将提交的表单数据发送到本地服务器

如何将数据发送到节点服务器

如何将数据发送到 Flask 服务器?

如何将表单数据从客户端发送到服务器

如何将 XML 数据发送到存在端点的服务器

将文件或文件数据发送到服务器端点?

Websocket 8.5 将 `<Buffer>` 发送到服务器。如何将服务器上的数据转换为 JSON?