VUE基本操作

数据能从内存中绑定到页面中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<body>
    <div id="app">
        <input type="text" v-model="username"> <!--v-model双向数据绑定-->
        <p>Hello {{username}}</p>
    </div>
    <script src="../js/vue.js"></script>
    <script>
        //创建VUE实例
        const vm = new Vue({ //配置对象
            el: '#app', //element :选择器
            data: { //mvvm中的model
                username:'atguigu'
            }
        })
    </script>
</body>
</html>

理解MVVM

model:模型,数据对象(data)
view:视图,模板页面
viewmodel:视图模型(vue的实例 )
view ---------> DOM监听 Model
view<----------数据绑定 Model

模板语法

模板的理解:动态的html页面,包含了一些JS语法代码---双大括号表达式、指令

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="app">
        <h1>双括号表达式</h1>
        <p>{{msg}}</p><!--textContent-->
        <p>{{msg.toUpperCase()}}</p>
        <p v-text="msg"></p><!--textContent-->
        <p v-html="msg"></p> <!--innerHtml-->
        <h1>指令1:强制数据绑定</h1>
        <img src="" alt="">
        <img v-bind:src="imgUrl" alt="">  <!-- v-bind简写为 :-->
        <h1>指令2:绑定事件监听</h1>
        <button v-on:click="test">test1</button> <!-- v-on简写为 @-->
        <button @click="test2(msg)">test2</button>
    </div>
</body>

<script src="../js/vue.js"></script>
<script>
    new Vue({
        el:'#app',
        data:{
            msg:'<a href="www.baidu.com">I will back</a>',
            imgUrl:'https://upload.jianshu.io/users/upload_avatars/2508642/3695dffde604.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/240/h/240'
        },
        methods:{
            test(){
                alert(1);
            },
            test2(content){
                alert(content);
            }
        }
    })
</script>
</html>

计算属性和监视

computed 计算属性
watch 监视属性
计算属性存在缓存,多次读取只执行一次getter操作

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="demo">
        姓:<input type="text" v-model="firstName"><br>
        名:<input type="text" v-model="lastName"><br>
        姓名(单向1):<input type="text" v-model="fullName1"><br>
        姓名(单向2):<input type="text" v-model="fullName2"><br>
        姓名(双向):<input type="text" v-model="fullName3"><br>

        <p>{{fullName1}}</p>
        <p>{{fullName1}}</p>
        <p>{{fullName1}}</p>

    </div>
    <script src="../js/vue.js"></script>
    <script>
     const vm = new Vue({
            el:'#demo',
            data:{
                firstName:'A',
                lastName:'B',
                fullName2:'A B'
            },
            computed:{
                //什么时候执行:初始化显示执行/相关的data属性数据发生了变化
                //计算并返回当前属性的值
                fullName1(){  //计算属性中的一个方法,方法的返回值作为属性值
                    return this.firstName + " " + this.lastName;
                },
                fullName3:{
                    //回调函数三个条件:你定义的,你没有调用,但最终执行了
                    //回调函数什么时候调用?用来干嘛的?
                    //回调函数 当需要读取当前属性值时回调 根据相关的数据计算并返回当前属性的值
                    get(){
                        return this.firstName + " " + this.lastName;
                    },
                    //回调函数,监视当前属性值的变化,当属性值发生改变时回调,更新相关的属性数据
                    set(value){
                        //value就是fullName3的最新属性值
                        const names = value.split(' ');
                        this.firstName = names[0];
                        this.lastName = names[1];
                    }
                }
            },
            watch:{ //配置监视
                firstName:function (value) { //firstName发生了变化
                    console.log(this); //就是vm对象
                    this.fullName2 = value + ' ' + this.lastName;
                }
            }
        })
        vm.$watch('lastName',function (value) {
            //更新fullName2
            this.fullName2 = this.firstName + ' ' +value;
        })
    </script>
</body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • 一、了解Vue.js 1.1.1 Vue.js是什么? 简单小巧、渐进式、功能强大的技术栈 1.1.2 为什么学习...
    蔡华鹏阅读 3,311评论 0 3
  • 此篇文章主要介绍了MVC和MVVM的区别和关系;同时阐述了有关函数式的概念;解释了ReactiveCocoa的工作...
    MooGoo阅读 757评论 0 3
  • 遇见暹罗,一场奇妙的、说走就走的旅行。 将我从兵荒马乱的毕业季中解救,与妈妈一起踏上这趟异乡之旅。 武汉——曼谷,...
    七月与海鸥阅读 1,092评论 6 6
  • jQuery和Zepto的区别?各自的使用场景? 针对 jQuery 的优化方法? *基于Class的选择性的性能...
    卖咸鱼的猫阅读 245评论 0 2
  • 今天我们的科技课终于来了一场知识竞赛,知识内容就是前两个魔盒的内容,在之前老师教给我们的两个口诀,我们就是...
    帅在阅读 268评论 0 1