javascript - Vue、复选框和计算属性

标签 javascript vue.js

我正在构建一个 Vue 2 应用程序,在页面中,我需要跟踪单个复选框的值。所以我这样做了:

<template>
    <div>
        <input
            type="checkbox"
            v-model="checkboxValue"
            /> Check to accept payment <a href="url" target="_blank">terms and conditions</a>
    </div>
</template>

<script>
export default {
    props: {
        cardData: {
            type: Object,
            required: true,
        },
        eventBus: {
            type: Object,
            required: true,
        },
        url: {
            type: String,
            required: true,
        },
    },
    data() {
        return {
            checkboxValue: false,
        };
    },
    computed: {
        forwardCheckboxValue() {
            console.log(this.checkboxValue);
            this.eventBus.$emit("checkbox_value", {
                checkboxValue: this.checkboxValue,
            });
        },
    },
};
</script>

<style>
</style>

基本上,我想跟踪是否选中了该复选框,并且每次值发生变化时,我都想发出一个事件来警告我。

问题是计算属性中的console.log没有被触发。 我错过了什么?

最佳答案

您可以使用computed setter并从 data 选项中删除 checkboxValue。这是fiddle

computed:{
    checkboxValue:{
        get(){
            return false;
        },
        set(newValue){
            this.$emit('checkbox-changed', newValue);
        }
    }
}

或者按照弗兰克教务长的建议设置 watcher它应该与您正在观看的 data 属性具有相同的名称。这是fiddle

watch:{
    checkboxValue(newValue){
        this.$emit('checkbox-changed', newValue);
    }
} 

关于javascript - Vue、复选框和计算属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45032714/

相关文章:

node.js - 当我尝试使用 Axios 向 Seneca.js API 发出请求时出现内部服务器错误

javascript - 填充时间轴以便显示所有数据? (自定义范围函数?)

javascript - 函数如何与可嵌入 JavaScript 小部件中的原型(prototype)进行通信?

javascript - IE 7/8 问题 - 无法获取属性值 'id' : object is null or undefined

Java 与 JavaScript 对于相同的方程和输入值给出不同的结果

javascript - webpack.config.babel.js中使用 'import'报错

javascript - 禁用提交,但首先提交表单

javascript - 微前端/Web 组件/Vue 路由器错误 : Uncaught TypeError: Cannot redefine property: $router

django - 在容器中部署 Django + Vuejs (AWS Elastic Beanstalk)

javascript - Vue.js + axios = 数据未更新