最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Pass parameters to @select of multiselect in Vue.js - vue-multiselect - Stack Overflow

programmeradmin1浏览0评论

I am trying to pass parameter to @select event function in Vue.js

HTML

 <template>
    <div class="container">

<div v-for="(billItem, k) in billItems" :key="k" >
    <div class="form-group row">
        <label class="col-form-label col-sm-3" for=""> Products</label>
        <div class="col-sm-3">
        <div class="form-group">
            <label for="">Product</label>
            <multiselect 
                v-model="billItem.billItem_selectedGood" 
                :options="productOptions" 
                :close-on-select="true" 
                :clear-on-select="false" 
                :hide-selected="true" 
                :preserve-search="true" 
                placeholder="Select Product" 
                label="name" 
                track-by="name" 
                :preselect-first="false"
                id="example"
                @select="onSelect_selectedGood"
            >
            </multiselect>
        </div>
    </div>
</div>

</div>
</template>

JS

<script>

export default {
  data(){
    return {
      form: new Form({
      })
    }
  },
  methods : {
    onSelect_selectedGood( option, id) {
      console.log("onSelect_selectedGood");
      console.log(option);
    }
  },
  mounted() {
      
  }
}
</script>

My Question: How can I pass billItem to onSelect_selectedGood so I can access it inside the function.

Something like @select="onSelect_selectedGood(billItem)" then implement the function like this onSelect_selectedGood( billItem, option, id)

Let me know how I can achieve it.

I am trying to pass parameter to @select event function in Vue.js

HTML

 <template>
    <div class="container">

<div v-for="(billItem, k) in billItems" :key="k" >
    <div class="form-group row">
        <label class="col-form-label col-sm-3" for=""> Products</label>
        <div class="col-sm-3">
        <div class="form-group">
            <label for="">Product</label>
            <multiselect 
                v-model="billItem.billItem_selectedGood" 
                :options="productOptions" 
                :close-on-select="true" 
                :clear-on-select="false" 
                :hide-selected="true" 
                :preserve-search="true" 
                placeholder="Select Product" 
                label="name" 
                track-by="name" 
                :preselect-first="false"
                id="example"
                @select="onSelect_selectedGood"
            >
            </multiselect>
        </div>
    </div>
</div>

</div>
</template>

JS

<script>

export default {
  data(){
    return {
      form: new Form({
      })
    }
  },
  methods : {
    onSelect_selectedGood( option, id) {
      console.log("onSelect_selectedGood");
      console.log(option);
    }
  },
  mounted() {
      
  }
}
</script>

My Question: How can I pass billItem to onSelect_selectedGood so I can access it inside the function.

Something like @select="onSelect_selectedGood(billItem)" then implement the function like this onSelect_selectedGood( billItem, option, id)

Let me know how I can achieve it.

Share Improve this question edited Jul 17, 2020 at 19:45 Boussadjra Brahim 1 asked May 6, 2019 at 20:31 ikuchrisikuchris 1,1721 gold badge15 silver badges33 bronze badges 2
  • What library are you using here? – Ohgodwhy Commented May 6, 2019 at 20:41
  • @Ohgodwhy am using this library vue-multiselect ( vue-multiselect.js ) – ikuchris Commented May 6, 2019 at 20:54
Add a ment  | 

2 Answers 2

Reset to default 8

You could do it simply like :

 @select="onSelect_selectedGood($event,billItem)"

and in your methods :

 methods : {
   onSelect_selectedGood( selectedOption,billItem) {
      console.log(  selectedOption,billItem);

   },
}

the passed parameters are the $event which is the selectedOption and billItem.

If you want to access all billItem, option and id, you can create a custom input ponent:

CustomInput.vue

<template>
  <multiselect 
      v-model="billItem.billItem_selectedGood" 
      :options="productOptions" 
      :close-on-select="true" 
      :clear-on-select="false" 
      :hide-selected="true" 
      :preserve-search="true" 
      placeholder="Select Product" 
      label="name" 
      track-by="name" 
      :preselect-first="false"
      id="example"
      @select="onSelect_selectedGood"
   >
</multiselect>
</template>

<script>
export default {
  props: ['billItem'],
  methods: {
    onSelect_selectedGood( option, id) {
      console.log("onSelect_selectedGood");
      console.log(option);
      console.log(this.billItem)
    }
  }
}
</script>

and then using it in your html:

<custom-input 
  :billItem="billItem"
/>

Because you passed billItem as a prop, you can access it by this.billItem in custom ponent.

发布评论

评论列表(0)

  1. 暂无评论