在vuejs中显示特定卡或元素的输入选择值?

Posted

技术标签:

【中文标题】在vuejs中显示特定卡或元素的输入选择值?【英文标题】:Display input selected value for particular card or element in vuejs? 【发布时间】:2018-11-14 15:43:44 【问题描述】:

我正在显示带有图像和输入元素的不同卡片。

      <v-layout row wrap v-for="card in cards" :key="card.id">
        <v-flex xs12>
          <v-card width=500px>            
            <v-flex row xs2 class="py-3">
              <img :src="card.src" >
              <input type="search" v-model="search"
                 style="width:85px; border: 1px solid;"
                 placeholder="feel" list="choose" @change="input(search, card.id)" >
                <datalist id="choose">
                  <option v-for="source in filteredInput" :value="source" :key="source"></option>
                </datalist>
             </v-flex>
           </v-card>
        </v-flex>
      </v-layout>

问题是,如果我为 card1 选择一个值,它会在没有选择它们的情况下反映所有卡的相同值。我想根据客户为该特定卡输入的输入显示输入值。

https://jsfiddle.net/eywraw8t/62401/

【问题讨论】:

你能提供一个 CodePen 来重现你的问题吗? 你不会把 v-for="card in cards" 放在 v-card 元素上吗?我们肯定需要查看 sn-p/codepen 以了解您要执行的操作。 jsfiddle.net/eywraw8t/62401 这是链接 您在所有输入上都有v-model="search",因此所有输入都反映了相同的值。因此,您可能希望将search 转换为字符串数组,然后将每个输入绑定到它自己的 v-model。 【参考方案1】:

如前所述,您将“搜索”变量绑定到所有卡片,这就是问题的原因。要修复它,只需将输入的 v-model 属性更改为“card.value”即可。现在每张卡的价值都是分开存储的。

https://jsfiddle.net/bhr0d69q/

<input type="search" v-model="card.value" style="width:85px; border: 1px solid;" placeholder="feel" list="choose" @change="input(card.value, card.id)">

【讨论】:

谢谢@konrad kalemba。再次从 datalist 中选择一个值后,我们需要再次选择它意味着选择值 2 次。有没有办法摆脱它? @code.mevn jsfiddle.net/bhr0d69q/24 看看。我为数据列表提供了唯一的 ID,因为它们都具有相同的 ID,这导致了问题。 filteredInput 必须在用户开始输入后返回,并且它必须返回与输入的输入完全一致的值。 jsfiddle.net/bhr0d69q/30 这是我需要的。谢谢@Konrad Kalemba【参考方案2】:

所以我修复了您遇到的 v-model 问题。您需要想出一种方法来存储当前 id 并从搜索中获取值。

我以前使用数组作为模型。它在这种情况下工作得很好。

https://jsfiddle.net/cgfhjmoy/1/

<div id="app">
  <v-layout row wrap v-for="(card, index) in cards" :key="card.id">
        <v-flex xs12>
          <v-card width=500px>            
            <v-flex row xs2 class="py-3">
              <img :src="card.src"  >
              <input type="search" v-model="search[index]"
                 style="width:85px; border: 1px solid;"
                 placeholder="feel" list="choose" @change="input(search[index], card.id)" >
                <datalist id="choose">
                  <option v-for="source in filteredInput" :value="source" :key="source"></option>
                </datalist>
             </v-flex>
           </v-card>
        </v-flex>
      </v-layout>
</div>

然后只需将您的 search 模型设置为数组 search: []

【讨论】:

谢谢@Daniel。再次从 datalist 中选择一个值后,我们需要选择它意味着选择值 2 次。有没有办法摆脱它? @code.mevn,我知道。您的问题是关于 v-model。

以上是关于在vuejs中显示特定卡或元素的输入选择值?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 vuejs 从多个元素中定位特定单击的元素

如何从节点列表中选择元素值?

Vuejs 子组件中的道具值无法绑定到元素属性

如何在不使用输入元素的情况下捕获 Vuejs 中的任何按键事件

Vuejs 根据从下拉列表中选择的值显示其他输入字段

如何从 VueJs 中的选定元素中删除特定的类名?