开课吧WEB全栈架构师第六期视频教程-vue2.0基础标签

el 不能直接设置为body
1.v-bind绑定属性 可以简写:title="数据+'字符串'" 绑定:src,绑定:href

<body>
    <div id="div1" :title="name+'111'">{{name}}</div>
</body>
<script>
let vm=new Vue({
    el:"#div1",
    data:{
        name:"syq"
    }
})
</script>

:class class可以为字符串 也可以为数组

<body>
    <div id="div1">
        <a :href="name" :class="class_str">{{name}}</a>
        <img :src="name" :class="class_arr" />
    </div>
</body>
<script>
    let vm = new Vue({
        el: "#div1",
        data: {
            name: "https://cn.bing.com/sa/simg/hpc26.png",
            class_str:"class1 class2 class3",
            class_arr:["class1", "class2", "class3"]
        }
    })
</script>

:style="" 可以为字符串 也可以为对象

<body>
    <div id="div1">
        <a :href="name" :style="style_str">{{name}}</a>
        <img :src="name" :style="style_json" />
    </div>
</body>
<script>
    let vm = new Vue({
        el: "#div1",
        data: {
            name: "https://cn.bing.com/sa/simg/hpc26.png",
            style_str:"width:30px;color:#f00",
            style_json:{
                "width":"300px",
                "color":"#f00"
            }
        }
    })
</script>

2.v-model="" 双向数据绑定 v-model 返回的数据都是字符串

<div id="div1">
<input type="text" v-model="name">
<p>{{name}}</p>
</div>
<script>
var vm=new Vue({
el:"#div1",
data:{
name:"syq"
}
})
</script>

加减法运算

<div id="div1">
<input type="text" v-model="n1"/>+
<input type="text" v-model="n2">=
{{parseInt(n1)+parseInt(n2)}}
</div>
<script>
var vm = new Vue({
el: "#div1",
data: {
n1:0,
n2:0
}
});
</script>

加减法简单运算,写在methods中,需要加{{sum()}}

<div id="div1">
<input type="text" v-model="n1"/>+
<input type="text" v-model="n2">=
{{sum()}}
</div>
<script>
var vm = new Vue({
el: "#div1",
data: {
n1:0,
n2:0
},
methods: {
sum(){
return parseInt(this.n1)+parseInt(this.n2)
}
}
});
</script>

3..v-html 可以解析html v-text 和{{}}插入内容一样
v-text 和{{}}区别:v-text 适用于全部输出,{{}}适用局部输出,但是要配合v-cloak适用

<body>
    <div id="div1">
        <div>{{str}}</div>
        <div v-html="str"></div>
        <div v-text="str"></div>
    </div>
</body>
<script>
    let vm = new Vue({
        el: "#div1",
        data: {
            str: `<p>11月26日,一段题为“张家口经开区国土局局长接访时玩手机”的视频在网络平台流传。</p>
<p>11月26日,一段题为“张家口经开区国土局局长接访时玩手机”的视频在网络平台流传。</p>
<p>11月26日,一段题为“张家口经开区国土局局长接访时玩手机”的视频在网络平台流传。</p>`
        },

    })
</script>

4.methods 事件 this 代表vm v-on:cliack 简写为 @click methods 中写函数方法

<body>
    <div id="div1">
        {{a}}
        <input type="button" value="+1" @click="fn(5)">
    </div>
</body>
<script>
    let vm = new Vue({
        el: "#div1",
        data: {
            a: 3
        },
        methods: {
            fn(n) {
                this.a += n
            }
        }
    })
</script>

5.show和if 显示隐藏
v-if: 判断是否加载,可以减轻服务器的压力,在需要时加载。if 控制dom节点
v-show:调整css dispaly属性,可以使客户端操作更加流畅。 show 控制的css
if 可以配合else 使用

<body>
    <div id="div1">
        <input type="button" value="显示隐藏" @click="fn()" />
        <div class="box" v-if="b">111</div>
        <div class="box" v-else>222</div>
    </div>
</body>
<script>
    let vm = new Vue({
        el: "#div1",
        data: {
            b: true
        },
        methods: {
            fn(n) {
               this.b=!this.b
            }
        }
    })
</script>

6.v-for 使用循环的时候,最好把key加上
循环数据

<body>
    <div id="div1">
        <h1 v-for="(item,index) in users" :key="index">{{item.name}}</h1>
    </div>
</body>
<script>
    let vm = new Vue({
        el: "#div1",
        data: {
            users: [{
                    name: "blue",
                    password: "123456"
                },
                {
                    name: "zhangsan",
                    password: "654321"
                },
                {
                    name: "lisi",
                    password: "111111"
                }
            ]
        },
    })
</script>

循环json

<body>
    <div id="div1">
        <h1 v-for="(val,name) in style" :key="index">{{name}}-{{val}}</h1>
    </div>
</body>
<script>
    let vm = new Vue({
        el: "#div1",
        data: {
            style: {
                width: "200px",
                height: "300px;"
            }
        },
    })
</script>

循环字符串

<body>
    <div id="div1">
        <h1 v-for="s in str" :key="index">{{s}}</h1>
    </div>
</body>
<script>
    let vm = new Vue({
        el: "#div1",
        data: {
            str:"djsklajdalk"
        },
    })
</script>

循环数字

<body>
    <div id="div1">
        <h1 v-for="i in 50" :key="index">{{i}}</h1>
    </div>
</body>
<script>
    let vm = new Vue({
        el: "#div1",
        data: {
            str:"djsklajdalk"
        },
    })
</script>

7.v-pre 预编译 提高性能 防止意外 不用编译,写的什么直接输出

<body>
    <div id="div1">
        <h1 v-pre>{{str}}</h1>
    </div>
</body>
<script>
    let vm = new Vue({
        el: "#div1",
        data: {
            str:"djsklajdalk"
        }
    })
</script>

8.js 会按顺序加载,如果有的没加载出来,则不会继续执行v-cloak 隐藏,数据出来了,则显示 一定要写css

<body>
    <style>
        *[v-cloak] {
            display: none;
        }
    </style>
    <div id="div1">
        <h1 v-cloak>{{str}}</h1>
    </div>
</body>
<script>
    let vm = new Vue({
        el: "#div1",
        data: {
            str: "djsklajdalk"
        }
    })
</script>

9.事件修饰符可以加多个事件,而且没有顺序

stop 禁止冒泡 (冒泡从内到外冒泡 @click.stop)
once 单次事件 只执行一次,但并不影响冒泡
.native 原生的(组件中使用)
.key(keycode|name)(提交留言,或者斜杠出现下拉列表)筛选按键
.keydown
.keydown.enter() =.keydown.13()按回车 执行
.keydown.ctrl.enter()组合键
prevent 阻止默认事件

stop 冒泡、阻止冒泡

<body>
    <div id="div1">
        <div @click="fn()">
            <input type="button" value="按钮" @click.stop="fn2()"/>
        </div>
    </div>
</body>
<script>
    let vm = new Vue({
        el: "#div1",
        data: {
            str: "djsklajdalk"
        },
        methods: {
            fn(){
                alert("1")
            },
            fn2(){
                alert("2")
            }
        }
    })
</script>

once 只发生一次

<body>
   <div id="div1">
       <div @click="fn()">
           <input type="button" value="按钮" @click.once="fn2()"/>
       </div>
   </div>
</body>
<script>
   let vm = new Vue({
       el: "#div1",
       data: {
           str: "djsklajdalk"
       },
       methods: {
           fn(){
               alert("1")
           },
           fn2(){
               alert("2")
           }
       }
   })
</script>

@keydown.enter/@keydown.13

<body>
    <div id="div1">
        <div @click="fn()">
                <input type="text" value="按钮" @keydown.enter="fn()">
        </div>
    </div>
</body>
<script>
    let vm = new Vue({
        el: "#div1",
        data: {
            str: "djsklajdalk"
        },
        methods: {
            fn(){
                alert("1")
            }
        }
    })
</script>

组合键

<input type="text" @keydown.ctrl.enter="fn()">

.prevent阻止默认跳转事件

<body>
    <div id="div1">
        <form action="index.html" method="post" @submit.prevent="submit()">
            <input type="submit" value="提交">
        </form>
    </div>
</body>
<script>
    let vm = new Vue({
        el: "#div1",
        data: {},
        methods: {
            submit() {
                alert("提交")
            }
        }
    })
</script>

self 处理自己的事件(冒泡的不认)

<body>
    <div id="div1">
        <div @click.self="fn()">
            <input type="button" value="按钮" @click="fn2()" />
        </div>
    </div>
</body>
<script>
    let vm = new Vue({
        el: "#div1",
        data: {},
        methods: {
            fn() {
                alert("fn")
            },
            fn2() {
                alert("fn2")
            }
        }
    })
</script>

methods 与computed区别

1.计算是没有区别的

computed优势: 变量 
1.具有缓存 性能高,不会自己重新计算,只有修改才会重新计算,
实时计算的,当检测到修改数据的时候,他会把根据这项数据相关的computed 值都计算一遍
2.方便 既可以读也可以写(和变量一样,变量可以出现的地方,他就可以出现)可以包含多个事件
3.属性的形式存在的,(v-model 不可以绑定方法,但是可以绑定变量)
methods 方法
方法只要输出就会重新计算

computed 与methods

<body>
<div id="div1">
<!--{{a}}+{{b}}={{sum()}}-->
{{a}}+{{b}}={{sum}}
</div>
</body>
<script>
let vm = new Vue({
el: "#div1",
data: {
a: 12,
b: 5
},
methods: {
// sum() {
// return this.a + this.b
// }
},
computed: {
sum() {
return this.a + this.b
}
}
})
</script>

computed 读写 get set

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