Vue Js没有在select2中获取选择选项值

Posted

技术标签:

【中文标题】Vue Js没有在select2中获取选择选项值【英文标题】:Vue Js did not get select option value in select2 【发布时间】:2020-04-25 21:22:11 【问题描述】:

我在关键时刻卡住了,同时使用 vue 和 laravel。我使用 select2 并显示我选择的选项及其值。当我要提交表单时,选定的选项第一次不会返回它的值,但第二次如果我要再次选择我的选项,它会起作用。 我需要帮助

这是我的 laravel Blade 模板:

<select name="income[]" id="" v-model="ledger_cash_in.income" class="js-example-basic-single">
    <option value="">...</option>
    @foreach ($ledger_category as $cat)
    <optgroup label=" $cat->inv_ledg_cat_category_name ">
        @foreach ($cat->getLedgers as $ledg)
            <option value=" $ledg->inv_ledg_id "> $ledg->inv_ledg_ledger_name </option>
        @endforeach
    </optgroup> 
    @endforeach
</select>
<button type="button" class="btn btn-success btn-xs" @click="addNewRow()">
    <i class="fa fa-plus"></i>
</button>

这是我的 Vue 代码

var app = new Vue(
        el: "#ledger",
        data: 
            ledger_cash_ins: [],
        ,
        methods:
            addNewRow() 
                this.ledger_cash_ins.push(
                    income: '',
                    );
                
        ,
        beforeMount()
            this.addNewRow();   
        ,
    ); 

【问题讨论】:

【参考方案1】:

我不太确定您要达到的目标。如果您尝试创建分类帐列表,您的代码需要进行一些修改。

所以目标是:

    从您的选择中选择一个选项 点击添加 所选值将存储在数组中

您的代码中的第一个问题是 select v-model 属性中的拼写错误。 其次,当您选择一个值时,legeder_cash_in.income 将为 1,但您并未将该值推送到您的数组中,而是将其附加到一个新对象,其中包含以 '' 作为值的关键收入。

您可以查看here。 因此,如果您尝试拥有一个带有收入键的对象数组,其中该键的值是您选择的选择选项,您应该首先向实例添加一个新变量以保存输入中的选定值,然后您的 AddNewRow 方法,您可以推送一个带有收入键的对象,该键包含您创建的新变量。

像这样:

var app = new Vue(
    el: "#ledger",
    data: 
        selectedValue: '',
        ledger_cash_ins: [],
    ,
    methods:
      addNewRow() 
        this.ledger_cash_ins.push(
          income: this.selectedValue,
        );
      
    
);

并在您的 html 中将 v-model 更改为 selectedValue:

<select name="income[]" id="" v-model="selectedValue" class="js-example-basic-single">
 <option value="">...</option>
 <option value="1">Ledger 1</option>
 <option value="2">Ledger 2</option>
 <option value="3">Ledger 3</option>

 @foreach ($ledger_category as $cat)
  <optgroup label=" $cat->inv_ledg_cat_category_name ">
   @foreach ($cat->getLedgers as $ledg)
    <option value=" $ledg->inv_ledg_id "> $ledg->inv_ledg_ledger_name </option>
   @endforeach
  </optgroup> 
 @endforeach
</select>

<button type="button" class="btn btn-success btn-xs" @click="addNewRow()">
 <i class="fa fa-plus"></i>Add
</button>

here 是一个工作示例。

这有意义吗?

【讨论】:

以上是关于Vue Js没有在select2中获取选择选项值的主要内容,如果未能解决你的问题,请参考以下文章

Vue js 没有发送选择选项值

更新 select2 组件的选项 - vue js

如何使用select2或任何其他js在选择中搜索选项值

从 select2 选择的选项中获取属性值

使用带有 select2 指令的 vue.js 方法

Vue.js 中的 Select2 未定义