【发布时间】:2018-11-17 23:23:37
【问题描述】:
我是 Vue 的新手,如果这是一个简单的问题,请原谅我。我有一个页面,我在其中动态呈现选择下拉列表并根据名为 filteredWidgets 的计算属性动态填充其选项,该属性取决于用户在其他下拉列表中所做的选择。标记如下:
<div v-if="filteredWidgets.length > 0">
<select id="widgetSelect" name="widgets">
<option value="">Select up to two Widgets</option>
<option v-for="widget in filteredWidgets" v-bind:value='widget.id'>
@{{widget.name}}
</option>
</select>
</div>
从 Select2 文档中,它指出这是将选择/选项元素转换为 Select2 多选元素的方式:
$(document).ready(function() {
$('#widgetSelect').select2();
});
我可以让它适用于具有非动态呈现的选择下拉列表的页面。显然,这不适用于 Vue,因为下拉列表是动态呈现的,并且它基于计算属性 selectedWidgets。我需要找到一种方法让 select2 在此下拉列表出现/更改时工作。这是计算的属性方法filteredWidgets():
filteredWidgets() {
var filteredWidgets = this.availableWidgets.filter(widget => {
return widget.color == selectedColor && widget.size == selectedSize;
});
return filteredWidgets;
}
虽然默认选择下拉菜单按照我的意愿呈现并包含我想要的过滤小部件,但我需要弄清楚如何在 Vue 呈现后立即将 select2() 应用于 widgetSelect 下拉菜单。这样做的正确方法是什么?
【问题讨论】:
标签: javascript vue.js jquery-select2