【问题标题】:How to assign v-model for each iteration如何为每次迭代分配 v-model
【发布时间】:2018-07-01 09:48:10
【问题描述】:

我有这个由 API 引发的对象错误(流明)

{
"title":["The title field is required."],
"body":["The body field is required."],
"days_after":["The days after field is required."]
}

然后我将此错误分配给mess 变量,并尝试使用此代码将每个错误作为单独的警报输出

<v-alert v-for="me in mess" v-if="mess" error dismissible v-model="mess">
    {{me[0]}}
</v-alert>

但是,当我解除 1 个错误时,所有错误都被解除/删除

【问题讨论】:

  • 什么是&lt;v-alert&gt;
  • @connexo : 来自 Vuetify 集合的组件。

标签: vue.js vuejs2 vue-component vuetify.js


【解决方案1】:

donMateo 有一个很好的解决方案,但如果您的意图是解除消息会从错误对象中清除消息,那么您实际上可以这样做(有点)。您只需要 v-model 单个行,而不是整个 mess 对象。 (另外,你can't v-model an alias 所以它不可能是v-model="me"。)

new Vue({
  el: '#app',
  data() {
    return {
      mess: {
        "title": ["The title field is required."],
        "body": ["The body field is required."],
        "days_after": ["The days after field is required."]
      }
    }
  }
});
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.5.0/vue.min.js"></script>
<script src="//unpkg.com/vuetify@0.17.6/dist/vuetify.min.js"></script>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Material+Icons" rel="stylesheet" />
<link href="//unpkg.com/vuetify@0.17.6/dist/vuetify.min.css" rel="stylesheet" />
<div id="app">
  <v-app>
    <div>
      <v-alert v-for="me, index in mess" color="info" icon="info" dismissible v-model="mess[index]">
        {{me[0]}}
      </v-alert>
      {{JSON.stringify(mess)}}
    </div>
  </v-app>
</div>

【讨论】:

  • 啊,我很接近,我确实尝试过v-for="(me index in mess)" v-model="mess.index",将数组键作为对象属性访问有点愚蠢,哈哈。非常感谢
  • 我需要使用 Vue CLI 3 将 v-for="me, index in mess" 更改为 v-for="(me, index) in mess" 才能使这个内卷工作。
【解决方案2】:

v-model 绑定负责警报的可见性,因此您需要一个布尔属性。让我们稍微改变一下数据的结构:

new Vue({
el: '#app',
data () {
  return {
    errors: [
      {text: "The title field is required.", show:true},
      {text: "The body field is required.", show:true},
      {text: "The days after field is required.", show:true}
    ]
  }
}
})

<div id="app">
  <v-app>
    <div>
      <v-alert v-for="me in errors" color="info" icon="info" dismissible v-model="me.show">
        {{me.text}}
      </v-alert>
    </div>
  </v-app>
</div>

瞧! CodePen demo

【讨论】:

  • Lumen (Micro Laravel) 抛出的错误,我对 lumen 很陌生,我不确定如何自定义抛出的错误以完成与您的示例类似的 json 数据,我更喜欢只直接使用该 json 数据
猜你喜欢
  • 2023-03-25
  • 2022-01-23
  • 2019-12-13
  • 2021-07-31
  • 2020-04-04
  • 2020-02-25
  • 2017-07-26
  • 2015-01-22
  • 1970-01-01
相关资源
最近更新 更多