首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在vue上访问和创建具有v模型的嵌套对象?

如何在vue上访问和创建具有v模型的嵌套对象?
EN

Stack Overflow用户
提问于 2022-10-12 16:10:36
回答 2查看 32关注 0票数 1

我对vuejs很陌生,我对v-模型有一个问题,我想知道是否有某种方法可以访问嵌套对象和使用v-模型自动创建。

我的html:

代码语言:javascript
复制
<div class="table-values" v-for="month in months">
       <div class="month" v-text="month"></div>
       <div>      
          <input type="text" class="form-control" inputmode="decimal" @blur="test" v-model="consumption[month].rush_hour">
       </div>
       <div>
       <input type="text" class="form-control" inputmode="decimal"  v-model="consumption[month].normal_hour">
       </div>
       <div>
         <input type="text" class="form-control" inputmode="decimal" readonly>
       </div>
       <div>
         <input type="text" class="form-control" inputmode="decimal" v-model="energy[month].rush_hour">
       </div>
       <div>
         <input type="text" class="form-control" inputmode="decimal" v-model="energy[month].normal_hour">
       </div>
</div>

我的JS:

代码语言:javascript
复制
var app = new Vue({
        el: "#app",
        data() {
            return {
                months: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],
                consumption: {},
                energy: {},
            }
    })

我想要创建这个例子,例如:

代码语言:javascript
复制
{
consumption: {
  Janeiro: {
   rush_hour: 1,
   normal_hour: 2
  },
  Fevereiro: {
   rush_hour: 1,
   normal_hour: 2
  }
},
energy: {
  Janeiro: {
   rush_hour: 1,
   normal_hour: 2
  },
  Fevereiro: {
   rush_hour: 1,
   normal_hour: 2
  }
}

我只使用v-model="Consumption[month]"进行测试并工作,但是当我使用v-model="Consumption[month]['rush_hour']"v-model="Consumption[month].rush_hour" v-model (Ex: Consumption.Janeiro.rush_hour)时,会在控制台上抛出一个错误。

EN

回答 2

Stack Overflow用户

发布于 2022-10-12 16:24:16

如果组件的复杂性增加到这样的程度,则最好将逻辑提取到另一个组件,并将动态值作为支持接收,这样您就可以得到以下内容:

代码语言:javascript
复制
props: {
  month // "January"
},

data() {
  return {
    consumption: {
      rush_hour: 0,
      normal_hour: 0
    },

    energy: {
      rush_hour: 0,
      normal_hour: 0
    }
  }
}


// Somewhere, you do this:
$emit('input', {
  consumption: this.consumption,
  energy: this.energy,
})
票数 0
EN

Stack Overflow用户

发布于 2022-10-13 03:45:57

发生错误的原因是null的访问模型(consumption['Janeiro'] = null)

我建议您将consumptionenergy放入data函数中。

这是我的代码:

代码语言:javascript
复制
data() {
const months = [
  "Janeiro",
  "Fevereiro",
  "Março",
  "Abril",
  "Maio",
  "Junho",
  "Julho",
  "Agosto",
  "Setembro",
  "Outubro",
  "Novembro",
  "Dezembro",
];

const consumption = {};
const energy = {};

const initialValue = {
  rush_hour: 1,
  normal_hour: 2,
};

months.forEach((month) => {
  consumption[month] = { ...initialValue };
  energy[month] = { ...initialValue };
});

return {
  months: months,
  consumption: consumption,
  energy: energy,
}
}

这里是代码沙箱。希望能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74044946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档