vue2.0 v-model指令

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="vue2.2.js"></script>
    </head>

    <body>
        <div id="app">
            <input type="text" v-model="userName" />
            <input type="text" V-model.lazy="msg" />
            <input type="text" V-model.number="num" />
            <p>{{userName}}</p>
            <p>{{msg}}</p>
            <p>{{num}}</p>
            <!--.lazy:取代 imput 监听 change 事件。
            .number:输入字符串转为数字。
            .trim:输入去掉首尾空格。-->
            <!--通过v-once指令能执行一次性的插值,当数据变化时,插值处的内容不会更新。-->
            <p v-once>一次改变{{userName}}</p>
        </div>
        <script>
            var vm = new Vue({
                el: "#app",
                data: {
                    userName: "张三",
                    msg: "懒加载",
                    num: "222222"
                }
            })
            vm.userName = '李四'
        </script>
    </body>

</html>

双向绑定原理:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>vue双向绑定的核心原理getter和setter</title>
    </head>
    <body>
        <input type="text" id="inp" value="admin" />
        <script>
            var inp = document.getElementById("inp");
            Object.defineProperty(inp, "v-model", { //对象自定义按键修饰符别名
                set: function(val) {
                    this.value = val //this指的是input
                },
                get: function() {
                    return this.value;
                }
            })
            console.log(inp['v-model'])
            inp["v-model"] = "hello"

            //vue就是利用这个set/get进行双向绑定,为什么我们一直要说是setter/getter
            //因为setter与getter是面向对象语言中的一个特性,利用getter可以获取对象的属性,利用setter可以设置对象的属性.
        </script>
    </body>

</html>

 

posted @ 2017-09-07 22:39  鱼樱前端  阅读(489)  评论(0编辑  收藏  举报