window.onload=function(){
new Vue({
el:'#my',//2.0不允许挂载到html body元素上
data:{
msg:'Hello World',
name:'sonia',
html:'<span>123</span>'
},
methods: {
action: function () {
this.msg = "click";
}
}
})
}
<style>
[v-loak]{
display:none;
}
</style>
<div id="my">
<!--另外一种方法加一个v-cloak-->
<div v-cloak>{{msg}}</div>
<!--解决{{}}闪烁的问题-->
<!--一个是文本,一个是html标签-->
<div v-text="msg"></div>
<div v-html="html">{{msg}}</div>
</div>
v-text v-html
类似于 inner html inner text
绑定对应的html 和 对应的text
html里可以包含标签
v-cloak;主要是用来解决浏览器闪烁的问题
还要配置对应的css,否则不生效
<style>
[v-cloak]{
display:none;
}
</style>
|
事件冒泡以及解决办法(点击事件发生在按钮上,按钮本身并无处理事件函数,则传播到父级去处理。) |
---|
window.onload=function(){
new Vue({
el:"#my",
data:{
},
methods:{
show1(){
console.log("111");
},
show2(){
console.log("222");
},
show3:function(){
console.log("333");
}//依次输出 333 222 111
}
})
}
<div id="my" @click="show1()">A1
<div @click="show2()">A2
<button @click="show3()">A3</button>
</div>
</div>
jQuery的解决办法 |
show3:function(e){
console.log("333");
e.stopPropagation();
}
|
<button @click="show3($event)">A3</button>
|
vue的解决办法 |
show3:function(){
console.log("333");
}
|
<button @click.stop="show3()">A3</button>
取消默认的动作 |
---|
<div>
<a href="http://www.baidu.com" @click="showPrevent()">1111</a>
<a href="http://www.baidu.com" @click="showPrevent()">2222</a>
</div>
js方法 |
<a href="http://www.baidu.com" @click="showPrevent1($event)">1111</a>
showPrevent1(e){
e.preventDefault();
}
|
vue的解决办法 |
<a href="http://www.baidu.com" @click.prevent="showPrevent()">2222</a>
|
|
阻止事件冒泡和组织默认功能 |
---|
<a href="http://www.baidu.com" @click.prevent.stop="showPrevent()">2222</a>
<a href="http://www.baidu.com" @click.prevent.stop="showPrevent()">2222</a>
|
| |
|
单次事件(无法阻止冒泡,只会执行一次,可以做签到功能) |
---|
once(){
console.log("once");
}
<div @click.once="once()">once</div>
|
键盘事件(稍作了解) |
---|
window.onload=function(){
new Vue({
el:"#my",
data:{
},
methods:{
key(){
console.log("aaa")
},
enter(){
console.log("enter")
},
getUp(){
console.log("getUp")
},
space(){
console.log("space")
},
keypress(){
console.log("keypress")
}
}
})
}
<div id="my">
<!--按下任意键-->
<input @keydown="key()"/>11111
<!--按下回车键-->
<input @keydown.enter="enter()"/>enter
<!--按下向上键-->
<input @keydown.up="getUp()"/>getUp
<!--空格键按下之后上弹-->
<input @keyup.space="space()"/>space
<input @keypress="keypress()"/>keypress
</div>
|
过滤器 |
---|
保留两位小数
window.onload=function(){
new Vue({
el:"#my",
data:{
},
methods:{
},
filters:{
number:function(data,n){/*data代表传的值,n代表参数 内嵌过滤器*/
return data.toFixed(2);
}
}
})
}
<div id="my">
<div>{{3.14159 | number()}}</div>
</div>
过滤器传参(处理数据的一个函数,大量的过滤器会使页面渲染的比较慢) |
number:function(data,n){/!*data代表传的值,n代表参数*!/
return data.toFixed(n);
}
<div>{{3.14159 | number(2)}}</div><!--去小数点后两位--> 去小数点后两位-->
|
点击按钮,显示或隐藏 |
addZero:function(data){
return data>10 ? data : "0"+data;
new Vue({
el:"#my",
data:{
msg:'hello',
flag:true
},
methods:{
click1:function(){
this.flag=!this.flag;/*取反*/
}
},
filters:{
show:function(data){//按钮变为显示或隐藏
if(data){
return "显示";
}else{
return "隐藏";
}
}
}
})
}
}
<button @click="click1()">{{flag | show()}}</button>
<ul v-if="!flag">
<li>122</li>
</ul>
时间戳 |
<p>{{curentTime | showTime()}}</p>
</div>
data:{
msg:'hello',
flag:true,
items:[{id:1,name:"sonia"},{id:2,name:"sonia1"},{id:3,name:"sonia2"}],
curentTime:Date.now()
},
showTime:function(data){
var d=new Date(data);
return d.getFullYear()+'-'+(d.getMonth()+1)+'-'+d.getDate();
}
|
|
|
|