从选择列表中选择选项时如何触发Vue事件

时间:2016-11-26 16:33:05

标签: javascript html vue.js vue-component

JSFiddle:https://jsfiddle.net/qc7yqvvs/

当我使用鼠标点击某个选项时,它会起作用,但如果我使用箭头键导航选项,则它不会更新multiplier。该指南仅包含:click事件,我尝试使用:select:enter和其他人,但他们似乎并不存在。

1 个答案:

答案 0 :(得分:5)

您可能会遇到的事件是v-on:change或速记:@change。然后,您可以在select而不是选项上设置此项。

但是你可能会发现通过将乘数更改为一个对象然后使用interval值来选择相应的一个来更容易做到这一点,即

修改

根据你的评论,我发现在组件中构建对象可能很棘手,所以你宁愿在html中设置它们。为此,尝试绑定每个选项的值,然后在v模型上设置一个对象,即

Vue.component('my-component', {
    data: function() {
        return {
            value: {},
        }
    },
    computed: {
        total: function() {
            return this.value.interval ? (this.value.interval * this.value.multiplier).toFixed(2) : 0
        }
    }
});

const app = new Vue({
    el: '#app',
});
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<div id="app">
    <my-component inline-template>
        <div>
            <select size="6" v-model="value">
                <option :value="{ interval: 24, multiplier: 1 }">24</option>
                <option :value="{ interval: 12, multiplier: 0.71 }">12</option>
                <option :value="{ interval: 8, multiplier: 0.56 }">8</option>
                <option :value="{ interval: 4, multiplier: 0.47 }">4</option>
                <option :value="{ interval: 2, multiplier: 0.25 }">2</option>
                <option :value="{ interval: 1, multiplier: 0.12 }">1</option>
            </select>
            <p>
                value: {{ value }}
            </p>
            <p>
                Total: {{ total }}
            </p>
        </div>
    </my-component>
</div>