zoukankan      html  css  js  c++  java
  • [Vue +TS] Use Two-Way Binding in Vue Using @Model Decorator with TypeScript

    Vue models, v-model, allow us to use two-way data binding, which is useful in some cases such as forms. This lesson shows how to use it by creating a custom checkbox component using the @Model decorator in TypeScript.

    When using the v-model, the custom component will receive 'value' prop from the parent component. If we also want to pass ':value' to the custom component, we need to use  '@Model('change') propName'.

    v-model will also received 'change' event for components communcation.

    Checkbox:

    <template>
      <div>
          <input type="checkbox" :id="id" :checked=checked @change="changed"/> {{label}}
      </div>
    </template>
    
    <script lang="ts">
    import Vue from 'vue'
    import { Component, Prop, Model } from 'vue-property-decorator'
    @Component
    export default class MyCheckbox extends Vue {
      @Prop() label: string
      @Prop() id: string
    
      @Prop()
      @Model('change') checked: boolean
    
      changed(ev) {
        this.$emit('change', ev.target.checked)
      }
    }
    </script>

    Parent Component:

    <template>
        <div>
            <MyCheckbox :label="checkbox.label" :id="checkbox.id" v-model="checkbox.checked"/>
    
            {{JSON.stringify(checkbox)}}
        </div>
    </template>
    <script lang="ts">
    
    import Vue from 'vue'
    import {Component} from 'vue-property-decorator'
    import MyCheckbox from './MyCheckBox.vue'
    
    @Component({
        components: {
            MyCheckbox
        }
    })
    export default class HelloTs extends Vue {
    
        checkbox = {
            label: 'Fancy checkbox',
            id: 'checkbox-id',
            checked: true
        }
    }
    </script>
  • 相关阅读:
    苹果手机 iframe 无法滚动bug
    网页实现文件下载的一些方法
    Document对象中的一些重要的属性和方法(笔记)
    window对象中的一些重要的属性和方法(笔记)
    JS中的继承
    利用XMLHttpRequest(XHR)对象实现与web服务器通信
    JS对象中的原型
    JS中this的指向
    JS中的作用域和闭包
    HTML5新增的本地存储功能(笔记)
  • 原文地址:https://www.cnblogs.com/Answer1215/p/7517612.html
Copyright © 2011-2022 走看看