第一篇 基础语法

声明式渲染

{{message}}
渲染到这里的时刻:{{new Date().getTime()}},与控制台上打印的DOMContentLoaded事件完成的时间作比较
移到我上面查看标题

条件渲染

number是1
number是2
显示了

列表渲染(数组)

列表渲染(对象)

属性绑定

测试拼接字符串:{{testTitle1Key+'-'+testTitle2Key}}

测试算术运算:{{testTitle4Key-testTitle3Key}}

测试对象(鼠标移到我上面看title值,跟Mustache渲染出来的不同):{{testObj}}

测试的象重写toString(鼠标移到我上面看title值,跟Mustache渲染出来的不同):{{testObj2}}

测试数组:{{testArr}}

测试数组重写toString(鼠标移到我上面看title值,跟Mustache渲染出来的不同):{{testArr2}}

测试方法:{{testMethod()}}

class/样式绑定

看看我是不是带着下划线变红了
我是被对象设置的变绿色了
我是被数组设置的蓝色加下划线
我是被三目运算符设置的颜色,class中的中括号可以不要
我是被数组中嵌套的对象设置的颜色
我是绑定到style属性的三目运算符表达式,结果为字符串设置的颜色,不会整个覆盖原生的style
支持style绑定对象形式的写法,属性名如果不带引号则需要用驼峰写法,带引号按需使用连字符。属性值可以拼接
请查看我的style属性——vue只渲染最后一个被浏览器支持的值

v-model绑定

单行文本框的值为:{{testText}}

复选框的绑定值为:{{testCheckbox}}

单选按钮的绑定值为:{{testRadio}}

下拉框的绑定值为:{{testSelect}}

下拉框的绑定值为:{{testSelectMul}}

v-model修饰符

.lazy——后面的数据在执行change事件时改变(本例中失焦时可观察到):{{testLazy}}

.number——后面的数据自动转为Number类型(在控制台通过app7.testNumber查看,数字开头会去除后面的非数字,字母开头就是字符串):{{testNumber}}

.trim——后面的数据自动去除前后空格(貌似不写也只会保留前面一个空格和去除后面的空格){{testTrim}}

事件绑定

直接绑定表达式 counter:{{counter}}

不能绑JS原生方法的语句,比如 v-on:click="alert(0)",会报错

调用vue中自定义方法

方法传参,其中$event是原生事件对象,可在控制台中看到当前元素的路径

绑keyup事件 inputMsg:{{inputMsg}}

事件修饰符

testOnclickMethods

没有添加修饰符的情况

testOnclickMethods

.stop——阻止事件冒泡

http://e-art.top?这个链接绑定到求和方法上

.prevent——阻止默认事件(光弹出不跳转)

testOnclickMethods

.capture——事件改为捕获模式(默认为冒泡)

testOnclickMethods

.self——只处理元素本身的事件,而不处理冒泡或捕获来的

testOnclickMethods

.once——事件触发一次后就被删除(修饰符绑在外层,包括被冒泡,可测试)

滚动我试试?
感受不够深刻

1~

2~

3~

.passive——恢复浏览器事件默认行为,每次事件产生,浏览器都会去查询一下是否有preventDefault阻止该次事件的默认动作。 我们加上passive就是为了告诉浏览器,不用查询了,我们没用preventDefault阻止默认动作。一般用在滚动监听,@scoll,@touchmove 。 因为滚动监听过程中,移动每个像素都会产生一次事件,每次都使用内核线程查询prevent会使滑动卡顿。我们通过passive将内核线程查询跳过,可以大大提升滑动的流畅度。 注意不能和prevent一起用,因为后者会被忽略。

.prevent.self——阻止了传播a的默认行为和事件,可以理解为先阻止默认跳转后再过滤掉传播来的。

.self.prevent——只阻止了a的点击事件,可以理解为把自身(self)的默认行为(prevent)阻止,而通过传播来的事件会触发默认动作跳转。