揭开vue神秘面纱之v-model

作者: IOneStar | 来源:发表于2017-08-22 16:48 被阅读162次
title

带你一步一步走进vue之实现一个简单的v-model

About

源码
aboutme
github
blog

1,实现简单的v-model的绑定
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>实现v-model的绑定</title>
</head>
<body>
    <input type="text" id="input" v-model="a"/>
    <p>可以打开控制台,然后输入vm.查看view到model的绑定;然后改变input的值,再次在控制台输出vm.查看model到view的绑定</p>
    <!-- <script src="https://cdn.bootcss.com/vue/2.4.2/vue.js"></script> -->
    <script>
        window.vm = new Vue({
            data: {
                b: 10000,
                a: 1
            },
            el: '#input'
        });
        setInterval(() => {
            vm.a++;
        }, 1000);
    </script>
</body>
</html>
function Vue(data) {
    const input = document.querySelector(data.el);
    let model = input.getAttribute('v-model');
    if(!data.data) {
        console.warn(`你没有定义data`);
        return;
    }
    if(model && data.data.hasOwnProperty(model)){
        // 实现model到view的绑定
        input.value = data.data[model];
        Object.defineProperty(this, model, {
            configurable: true,
            enumerable: true,
            get: function() {
                return data.data[model];
            },
            set: function(newVal) {

                input.value = data.data[model] = newVal;
            },
        })
        // 实现view到model的绑定
        input.addEventListener("oninput", () => {
            this[model] = input.value;
        });
    } else {
        console.warn(`你没有定义${model}属性`);
        return;
    }
}
  • 把一个普通 JavaScript 对象传给 Vue 实例的 data
    选项,Vue 将遍历此对象所有的属性,并使用 Object.defineProperty 把这些属性全部转为 getter/setter。
  • 给input添加oninput事件实现view到model的绑定,即在input中输入一个值,vm.a也会跟着发生变化

相关文章

  • 揭开vue神秘面纱之v-model

    带你一步一步走进vue之实现一个简单的v-model About 源码aboutmegithubblog 1,实现...

  • 上课无聊看看vue 源码

    看了很多关于vue 的文章和视频,总觉得vue 有很多神秘的面纱,我决定尝试着揭开这神秘的面纱。vue 源码里面有...

  • 为您揭开runtime的神秘面纱 <一>

    为您揭开runtime的神秘面纱 <一> 为您揭开runtime的神秘面纱 <一>

  • 独家个人原创,独家分享

    揭开监狱的神秘面纱之服刑人员的减刑嘉奖

  • 面纱(一)

    别揭开这五彩面纱,芸芸众生都管它叫生活…… 如果揭开人生的神秘面纱, 发现苦难与甜美都...

  • ✍揭开神秘的面纱 ✍

    初阳的晨韵 神秘 细细品味 又略带些忧伤 暗红色的初晨天空 给人以一想探究竟的好奇感 会发生什么 这样的...

  • 揭开吴哥窟神秘面纱

    说起吴哥窟,总会有几分神秘的色彩。600年的吴哥王朝,吴哥地下城,高棉雕像的神秘微笑,《古墓丽影》拍摄地…… 决定...

  • 神秘面纱终于揭开!

    业界一直传闻今年玉龙即将举办常规赛,今天,靴子终于落地,玉龙马会通过其企业新闻发布平台“玉龙马汇”对外公布了《20...

  • 揭开习惯神秘面纱

    参加易仁永澄老师主讲的海比特训练营,深有感触,特此分享。 一.反思一个问题:你的习惯为什么会失败? 养成习惯之前明...

  • 揭开中医神秘面纱

    有没有发现,现在开始流行养生学?电视节目、微信链接,似乎耳边眼睛充斥着都是各式的专家给我们介绍的养生论。比如微信最...

网友评论

    本文标题:揭开vue神秘面纱之v-model

    本文链接:https://www.haomeiwen.com/subject/lvpldxtx.html