【问题标题】:get selected item in multiselect in vuejs component在vuejs组件的多选中获取选定的项目
【发布时间】:2020-10-01 13:50:25
【问题描述】:

在我的组件中,我有多重选择,应该在传递的匹配值上选择选项:

<select class="custom-select" multiple="" v-model="items">
          <option v-for="item in objects_list" :selected="itemSelected(item)" :key="item.id" :value="item.id">
              {{item.name}}
          </option>
        </select>

...

methods() {
  itemSelected(item) {
      let selected;
      let object_selected = this.value.filter(object => {
        console.log(object)
        if(item.id == object) {
          return true;
        }
      });
    }

所选绑定似乎不起作用,如何正确实现多选以绑定所选选项?

【问题讨论】:

    标签: vue.js binding multi-select


    【解决方案1】:

    最好的方法是使用 Vue.js 中的 CREATED 函数

    <template>
      <div>
        <select class="ur-CSS-class" multiple v-model="selected">
          <option v-for="item in objects_list" :key="item.id" :value="item.id">
            {{ item.name }}
          </option>
        </select>
        <br />
        <span>Selected : {{ selected }}</span>
      </div>
    </template>
    
    <script>
    var your_list = [
      { name: "one", id: 13 },
      { name: "two", id: 18 },
      { name: "three", id: 11 },
      { name: "four", id: 7 },
      { name: "five", id: 1 },
      { name: "six", id: 2 },
    ];
    
    export default {
      name: "App",
      data() {
        return {
          objects_list: your_list,
          selected: []
        };
      },
      props:{
       inputData: {
           type: Object,
           required: true
        }
      },
      computed: {
          selected() {
            let selected = this.objects_list.filter(item => {
                  return this.inputData.find(i => i == item.id);
               });
            return selected;
        }
      }
    };
    </script>
    

    【讨论】:

    • 感谢您的解释,但我希望以我从商店获取值的方式预先计算 selected_options
    • 我想帮助你,但你能更具体一点吗?据我了解,您的商店收到了一个列表,然后您收到此列表 objects_list 并且您只想显示 item.id 等于 object 的项目(您计算的对象)。所以这个显示必须是“瞬时的”。或者您有一个文本字段可以在列表中添加值,并且仅当它们验证您的条件时才会显示它们(例如下面)?
    • 我的目标只是在多选字段中列出商店中的商品和预选商品
    • 我想我理解了你的问题,为了解决它,我使用了 CREATED() 函数,它允许你对你想要的项目进行排序(并在你的情况下预先选择)。
    • 你的解决方案效果很好,除了你不需要在 created() 中返回对象,应该在计算或数据逻辑中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 2019-09-04
    • 1970-01-01
    • 2020-07-30
    • 2020-11-29
    • 2016-09-18
    • 2016-07-03
    相关资源
    最近更新 更多