最基本封装

    1. <template>
    2. <label class="el-radio">
    3. <span class="el-radio__input">
    4. <span class="el-radio__inner"></span>
    5. <input
    6. type="radio"
    7. :value="label"
    8. v-model="model"
    9. />
    10. </span>
    11. <span class="el-radio__label">
    12. <slot></slot>
    13. <template v-if="!$slots.default">
    14. {{ label }}
    15. </template>
    16. </span>
    17. </label>
    18. </template>
    19. <script>
    20. export default {
    21. name: "ElRadio",
    22. // 注意 value、checked、selected 是表单元素的初始值
    23. props: {
    24. label: {},
    25. value: {},
    26. },
    27. computed: {
    28. // 此处相当于 v-model 的语法糖
    29. model: {
    30. get() {
    31. return this.value;
    32. },
    33. set(val) {
    34. this.$emit("input", val);
    35. },
    36. },
    37. },
    38. };
    39. </script>
    40. <style lang="scss" scoped>
    41. </style>

    computed 中 get 与 set 代表什么意思

    以下这段代码是什么意思
    相当于是 v-model 的语法糖

    1. this.$emit('input', val);

    Object.freeze