javascript - 按 vue.js 2 中选定的选项过滤列表

标签 javascript vuejs2

我正在尝试 vue.js,但无法真正弄清楚如何通过简单地在框中选择一个选项来过滤渲染的项目列表。

每个列表项都有一个 pric 属性。例如。 200 美元、500 美元、600 美元等。

我的选择框选项每个都有一个价格范围。例如 0 - $250、$250 - $500、$500 - $750。

例如,当我在选择框中选择 $200 - $500 时,我只希望列表中价格介于该范围之间的商品可见。

html:

<select>
    <option>
        Price 0 - 250
    </option>
    <option>
        Price 250 - 500
    </option>
    <option>
        Price 500 - 750
    </option>
    <option>
        Price 750 - 1000
    </option>
</select>

模板:

<li v-for="(item, index) in items">
    {{ item.price }} // some price in $. eg. $ 340. different for each 
item
</li>

最佳答案

由于我第一次误解了这个问题,所以我更新了原来的答案。 无论如何,here是一个 jsfiddle,它可以完成我相信您正在尝试做的事情。

 Vue.filter('currency', function (value) {
    return '€ ' + parseFloat(value).toFixed(2);
});

var demo = new Vue({
    el: '#demo',
    data: {
        items: [5,20],
        limits: [{min: 1, max: 10}, {min:11, max: 25}, {min:26, max: 50}],
        option: 0
    },
    computed: {
        selectedList () {
        var ul = [];
        for(i =0; i < this.items.length; i++) {
            if (this.items[i] > this.limits[this.option].min && this.items[i] < this.limits[this.option].max) {
            ul.push(this.items[i])
          }
        }
        return ul;
      }
    }
})

我已将最小/最大值放入数组中,以便我们可以使用选择元素循环遍历这些值。与我们创建一个计算数组相比,该数组返回所选最小值/最大值之间的所有值。

我还添加了一个过滤器来添加货币符号。

关于javascript - 按 vue.js 2 中选定的选项过滤列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46218292/

相关文章:

javascript - 有条件地加载 polyfill

javascript - Office ContentControls 列表不准确

javascript - Axios 拦截器重试原始请求并访问原始 promise

javascript - 将 v-model 插入 vuejs 元素

javascript - 如何在发票模板中显示我的发票数据

javascript - 如何在我的自定义插件中绑定(bind)调整大小事件

javascript - 如何在 JavaScript 中动态生成变量?

javascript - 如何在窗口调整大小后获取高度和宽度

javascript - Vuejs 2.4 过渡组大小调整问题与 vuetify

javascript - 如何在计算属性中使用 window.innerWidth - NuxtJS