Vue——使用v-bind与v-on实现v-model双向绑定

Vue——使用v-bind与v-on实现v-model

v-model其实是一个语法糖,他的背后本质包含两个操作:
1.v-bind绑定一个value属性
2.v-on指令给当前元素绑定input事件


实现步骤如下:
①通过v-bind实现,若修改app.message,则使得网页显示的input中的value也发生改变。

<body>
    <div id="app">
        <input type="text" :value='message'>
        <h2>{
    
    {
    
    message}}</h2>
    </div>

    <script src="../JS/vue.js"></script>
    <script>
        const app = new Vue({
    
    
            el:'#app',
            data:{
    
    
                message:'你好!',
            }
        })
    </script>
</body>

②通过v-on实现,若通过键入input,则修改app.message的值。

<body>
    <div id="app">
        <input type="text" :value='message' @input='valueChange'>
        <h2>{
    
    {
    
    message}}</h2>
    </div>
    <script src="../JS/vue.js"></script>
    <script>
        const app = new Vue({
    
    
            el:'#app',
            data:{
    
    
                message:'你好!',
            },
            methods:{
    
    
                valueChange(event){
    
    
                    app.message = event.target.value; 
                }
            }
        })
    </script>
</body>

③更简单的书写方式实现v-on——根本不用绑定方法

<body>
    <div id="app">
        <!-- 更简单的书写方式——根本不用绑定方法 -->
        <input type="text" :value = 'message' @input='message = $event.target.value'>

        <h2>{
    
    {
    
    message}}</h2>
    </div>
    <script src="../JS/vue.js"></script>
    <script>
        const app = new Vue({
    
    
            el:'#app',
            data:{
    
    
                message:'你好!',
            }
        })
    </script>
</body>

全部代码:

<body>
    <div id="app">
        <!-- v-model其实是一个语法糖,他的背后本质包含两个操作:
            1.v-bind绑定一个value属性
            2.v-on指令给当前元素绑定input事件 -->
        <!-- <input type="text" v-model = 'message'> -->

        <!-- 上面语句 等同于 下面的连写 -->
        <!-- 利用 v-bind: 和v-on: 即可实现 -->
        <input type="text" :value='message' @input='valueChange'>

        <!-- 更简单的方法——根本不用绑定方法 -->
        <input type="text" :value = 'message' @input='message = $event.target.value'>

        <h2>{
    
    {
    
    message}}</h2>
    </div>

    <script src="../JS/vue.js"></script>
    <script>
        const app = new Vue({
    
    
            el:'#app',
            data:{
    
    
                message:'你好!',
            },
            methods:{
    
    
                valueChange(event){
    
    
                    app.message = event.target.value; 
                }
            }
        })
    </script>
</body>

在这里插入图片描述
总结:
以下两种方式是等同的。

<input type="text" v-model = 'message'>
<input type="text" :value = 'message' @input='message = $event.target.value'>

猜你喜欢

转载自blog.csdn.net/weixin_45664402/article/details/114487853