系列文章目录
一、事件绑定 v-on:
<div id="app">
<button @click=f1>通过v-on进行事件绑定</button>
<button @click=f1($event,30)>事件绑定传递参数</button>
<button @click=f2($event,20)>事件绑定,即传递事件对象,也传递参数:{{name}}-{{age}}</button>
<button @keydown=f4($event)>事件函数是一个箭头函数</button>
<input type="text" @focus=f5 @blur=f6></input>
</div>
<script src="./vue.js"></script>
<script>
Vue.config.productionTip = false;
var app = new Vue({
el: "#app",
data: {
name: '张三',
age: 10,
},
methods: {
f1(e, a = 10) {
console.log(a);
console.log(e);
console.log(this);
},
f2(e, a) {
console.log('我是e' + e);
console.log('我是a' + a);
console.log('我是_data中的name:' + this.name);
console.log('我是data中的name:' + this.name);
this.age += 2
},
f4: (e) => {
console.log(e);
console.log(this.name);
},
f5(e) {
console.log('我是focus' + e);
e.target.style.backgroundColor = 'red'
},
f6(e) {
console.log("我是bulr" + e);
e.target.style.backgroundColor = ''
}
},
})
</script>
二、事件绑定 v-if v-else v-show:
<body>
<div id="app">
<!-- 如果通过v-if进行元素的创建与隐藏,显示的时候是创建,隐藏是元素删除,一般一些频繁操作的组件,(不推荐使用v-if. 重复创建和删除导致页面的性能降低).
vue里面对v-if进行处理,如果删除一个组件,会把组件进行缓存,如果再次通过v-if显示(创建),
会从缓存中取出再显示,通过从缓存中找到删除的组件的方式,提高效率
-->
<p v-if=show>我是v-if:是条件渲染指令,如果是v-if为true,该标签就会显示</p>
<p v-else>我是v-else:与v-if条件是相反的,v-else成立,该标签就显示 </p>
<button @click=changeShow>点击切换显示</button>
<hr>
<input type="text" v-model:value='score'>
<p v-if="score>=90 && score<=100">优秀</p>
<p v-if="score>=80 && score<90">良好</p>
<p v-if="score>=60 && score<80">及格</p>
<p v-if="score<60">不及格</p>
<hr>
<!-- 三元运算 -->
<p>{{show ? '男' : "女"}}</p>
<!-- -->
<p v-if='show'>是否显示</p>
<!-- 通过计算属性 -->
<!-- <p>{{Sex}}</p> -->
<hr>
<p v-show="show">v-show显示和隐藏组件的指令,通过css样式display=none/block进行元素的显示和隐藏</p>
</div>
</body>
<script src="./vue.js"></script>
<script>
Vue.config.productionTip = false;
var app = new Vue({
el: "#app",
data: {
show: true,
score: 99,
},
computed: {
Sex() {
return this.show ? '男' : "女"
}
},
methods: {
changeShow() {
this.show = !this.show
},
},
})
</script>
二、事件绑定 v-for:
body>
<div id="app">
<!-- v-for 循环指令 可以对数组进行循环,参数不能更换位置(n表示遍历的元素,i表示索引值)
:key是v-for的唯一标识,在循环渲染的时候,一般需要把key属性进行设置,属性不能一样
在更新组件可以根据key值找到要更新的组件,从而提升页面渲染的速率
-->
<p v-for="(n,i) in books" :key="n.id">{{i}}-------{{n}}-------{{n.id}}-{{n.name}}-{{n.price}}-{{n.count}}</p>
</div>
</body>
<script src="./vue.js"></script>
<script>
Vue.config.productionTip = false;
var app = new Vue({
el: "#app",
data: {
books: [{
id: 1,
name: 'vue从入门到放弃',
price: 1000,
count: 200
}, {
id: 2,
name: 'python从入门到放弃',
price: 2000,
count: 500
}, {
id: 3,
name: 'java从入门到放弃',
price: 280,
count: 290
}]
},
})
</script>