【问题标题】:Using same v-model to multiple elements对多个元素使用相同的 v-model
【发布时间】:2017-03-14 12:25:41
【问题描述】:

我有一个设置为 v-model="compose.Recipient" 的下拉菜单。

根据“compose.Recipient”,我需要显示另一个下拉列表,如下所示

<div class="form-group" v-if="compose.Recipient==2" title="<?=$this->lang->line('SELECTCLASS')?>">
      <select v-model="compose.RecipientID" >
           <option v-for="value in a" v-bind:value="value"><?=$this->lang->line('CLASS')?> {{value}}</option>
      </select>
</div>
<div class="form-group" v-else-if="compose.Recipient==3" title="<?=$this->lang->line('SELECTGRADE')?>">
      <select v-model="compose.RecipientID" >
           <option v-for="value in b" v-bind:value="value"><?=$this->lang->line('GRADE')?> {{value}}</option>
      </select>
</div>
<div class="form-group" v-else-if="compose.Recipient==4" title="<?=$this->lang->line('SELECTBUS')?>">
      <select v-model="compose.RecipientID" >
           <option v-for="value in c" v-bind:value="value"><?=$this->lang->line('BUS')?> {{value}}</option>
      </select>
</div>

因为 v-if,它不起作用,如果我使用 v-show,它就起作用了。

我对所有下拉菜单都使用相同的v-model="compose.RecipientID",因此我无法使用 v-show 代替 v-if。

如何解决?

非常感谢。

【问题讨论】:

  • 你能做一个小提琴吗?

标签: javascript vue.js vuejs2 vue-component


【解决方案1】:

创建一个代表select 来源的computed,而不是使用三个不同的select 元素。该计算函数将查看compose.Recipient 并返回abc。将计算结果用作v-for 的源(在单个select 中)。

这样您只需将单个项目绑定到compose.RecipientID,您不必担心显示/隐藏不同的select 元素。

【讨论】:

  • 感谢您的回复。如果要使用计算属性,我有两个问题 1) 我需要 $('.selectpicker').selectpicker('refresh') 在返回值后运行它,以便将值更新为下拉列表。 2) 将标题和前缀动态绑定到每个下拉列表。我的意思是在“compose.Recipient==2”的情况下,需要将标题绑定为title="&lt;?=$this-&gt;lang-&gt;line('SELECTCLASS')?&gt;"前缀为&lt;?=$this-&gt;lang-&gt;line('CLASS')?&gt;
  • 我已经编辑了带有标题和前缀的问题。请查看它
猜你喜欢
  • 2016-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-07
  • 1970-01-01
  • 1970-01-01
  • 2019-05-13
  • 2014-11-21
相关资源
最近更新 更多