Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用表单(Vue.js)的响应在JSON文件中保存数据集属性_Javascript_Json_Laravel_Vue.js_Vuetify.js - Fatal编程技术网

Javascript 使用表单(Vue.js)的响应在JSON文件中保存数据集属性

Javascript 使用表单(Vue.js)的响应在JSON文件中保存数据集属性,javascript,json,laravel,vue.js,vuetify.js,Javascript,Json,Laravel,Vue.js,Vuetify.js,我试图构建一个JSON文件,在其中存储表单中的所有答案。一些输入具有额外的数据集属性(数据标记)。在保存表单时,我希望将JSON文件中的所有这些“标记”提取为键和输入值。我试图通过向这些输入添加引用并使用$refs标记名称来实现这一点 我得到一个错误: v-on处理程序中出错:“TypeError:无法读取未定义的属性“push” 我正在尝试将“标记”存储在一个单独的数组中,然后将其附加到表单输出中 不确定这是否是正确的解决方案,但我想不出任何其他方法,所以如果您有任何其他想法,请随意 Vue

我试图构建一个JSON文件,在其中存储表单中的所有答案。一些输入具有额外的数据集属性(数据标记)。在保存表单时,我希望将JSON文件中的所有这些“标记”提取为键和输入值。我试图通过向这些输入添加引用并使用$refs标记名称来实现这一点

我得到一个错误:

v-on处理程序中出错:“TypeError:无法读取未定义的属性“push”

我正在尝试将“标记”存储在一个单独的数组中,然后将其附加到表单输出中

不确定这是否是正确的解决方案,但我想不出任何其他方法,所以如果您有任何其他想法,请随意

  • Vue.js版本:2.6
  • vuetify.js版本:2.3
表格输入:

<v-text-field label="ICD" id="pos_t_1" name="pos_t_1" ref="icd" data-tag="icd_tag" v- 
  model="textfield" hide-details="auto" />

<v-radio-group v-model="radio" hide-details="auto" row>
  <v-radio
    v-for="radio in group"
    ref="radioGroup"
    :key="radio.id"
    :id="radio.id"
    :name="radio.id"
    color="primary"
    :data-tag="radio.tag"
    :label="radio.text"
    :value="radio.text"
  >
 </v-radio>
</v-radio-group>
我想要的JSON结构:

  [{
     "pos_t_1":"Test",
     "icd_tag":"Test",
     "pos_r_2":"",
     "radio_tag_2":"",
     "pos_r_3":"Radio 3",
     "radio_tag_3":"Radio 3",
     "pos_r_4":"",
     "radio_tag_4":"",
     "pos_r_5":"",
     "radio_tag_5":"",
  }],

当您尝试推送到空数组时,无法推送到指定的键,因为它不存在

因此,当您声明
tags=[]
然后尝试推送
tags[key]时,推送(value)
tags[key]未定义,因此推送方法不可用

相反,您可以更改onSubmit方法,如下所示

onSubmit(){
Object.keys(this.$refs).forEach((值)=>{
常量参考值=此。$refs[值];
if(数组.isArray(参考文献)){

对于(设i=0;i当您尝试推送到空数组时,您无法推送到指定的键,因为它不存在

因此,当您声明
tags=[]
然后尝试推送
tags[key]时,推送(value)
tags[key]未定义,因此推送方法不可用

相反,您可以更改onSubmit方法,如下所示

onSubmit(){
Object.keys(this.$refs).forEach((值)=>{
常量参考值=此。$refs[值];
if(数组.isArray(参考文献)){

因为(让i=0;i多亏了@Donkarnash,我这样做了:

            Object.keys(this.$refs).forEach((value) => {
            const refs = this.$refs[value];
            if (Array.isArray(refs)) {
                for (let i = 0; i < refs.length; i++) {
                    let key = refs[i].$attrs['data-tag']
                    if (refs[i].isActive === true) {
                        this.tags[key] = this.radio
                    }
                    else {
                        this.tags[key] = ''
                    }
                }
            } else {
                let key = refs.$attrs['data-tag']
                this.tags[key] = this.textfield
            }
        })
Object.keys(this.$refs).forEach((值)=>{
常量参考值=此。$refs[值];
if(数组.isArray(参考文献)){
对于(设i=0;i

也许这对其他人也有帮助。

多亏了@Donkarnash,我才这样做:

            Object.keys(this.$refs).forEach((value) => {
            const refs = this.$refs[value];
            if (Array.isArray(refs)) {
                for (let i = 0; i < refs.length; i++) {
                    let key = refs[i].$attrs['data-tag']
                    if (refs[i].isActive === true) {
                        this.tags[key] = this.radio
                    }
                    else {
                        this.tags[key] = ''
                    }
                }
            } else {
                let key = refs.$attrs['data-tag']
                this.tags[key] = this.textfield
            }
        })
Object.keys(this.$refs).forEach((值)=>{
常量参考值=此。$refs[值];
if(数组.isArray(参考文献)){
对于(设i=0;i

也许这对其他人也有帮助。

谢谢你的回答。tags[key]=这个.textfield对文本字段有效。我的收音机有另一个问题。当我尝试这个时。tags[key]=this.radio在for循环中,所有无线电标记从所选无线电中获得相同的值,但我需要该值仅用于所选无线电中的所选标记,其余标记必须为空。您有解决方法吗?我不知道vuetify。但您可以执行一些条件操作,如
this.refs[I]['data-tag']=='radio.tag'&&this.$refs[i].选中){this.tags[key]=this.radio}其他{this.tags[key]=''}
谢谢你的回答,this.tags[key]=this.textfield对文本字段有效。我对收音机有另一个问题。当我尝试这个时。tags[key]=this.radio在for循环中,所有无线电标记从所选无线电中获得相同的值,但我需要该值仅用于所选无线电中的所选标记,其余标记必须为空。您有解决方法吗?我不知道vuetify。但您可以执行一些条件操作,如
this.refs[I]['data-tag']=='radio.tag'&&this.$refs[i].选中){this.tags[key]=this.radio}其他{this.tags[key]='}
            Object.keys(this.$refs).forEach((value) => {
            const refs = this.$refs[value];
            if (Array.isArray(refs)) {
                for (let i = 0; i < refs.length; i++) {
                    let key = refs[i].$attrs['data-tag']
                    if (refs[i].isActive === true) {
                        this.tags[key] = this.radio
                    }
                    else {
                        this.tags[key] = ''
                    }
                }
            } else {
                let key = refs.$attrs['data-tag']
                this.tags[key] = this.textfield
            }
        })