🍅 作者简介:哪吒,CSDN2021博客之星亚军🏆、新星计划导师✌、博客专家💪
🍅 哪吒多年工作总结:Java学习路线总结,搬砖工逆袭Java架构师
🍅 关注公众号【哪吒编程】,回复1024,获取Java学习路线思维导图、大厂面试真题、加入万粉计划交流群、一起学习进步
目录
一、vue常用标签简介
1、v-for和@click实现点击赋予红色效果
2、合并两个字符串
3、计算属性的复杂操作
4、var没有块级作用域,let有块级作用域
5、const 常量的定义
6、v-on的参数问题
7、v-on修饰符
8、v-if
9、v-show
10、v-for遍历对象
11、哪些数组的方法是响应式的
二、购物车综合案例
1、index.html
2、index.js
3、style.css
4、实现效果
一、vue常用标签简介
1、v-for和@click实现点击赋予红色效果
.active{
color: red;
}
-
v-bind:class="{active:currentIndex == index}"
@click="liClick(index)">{{item}}
const app = new Vue({
el: '#app',
data: {
message: '你好',
girls: ['比比东','千仞雪','美杜莎','云韵','雅妃'],
currentIndex: 0
},
methods: {
liClick(index){
this.currentIndex = index
}
}
})
2、合并两个字符串
let app = new Vue({
el: '#app',
data: {//定义数据
message: '哪吒',
firstName: '无情',
lastName:'冷血'
},
computed: {
fullName: function () {
return this.firstName + ' ' + this.lastName
}
}
})
3、计算属性的复杂操作
let app = new Vue({
el: '#app',
data: {//定义数据
girls: [
{name: '千仞雪',age:18},
{name: '云韵',age:20},
{name: '比比东',age:25},
{name: '美杜莎',age:22}
]
},
computed: {
ageSum: function () {
let sum = 0
let result = 0
for(let i = 0;i sum += this.girls[i].age } result = sum/this.girls.length; return result }, es6: function () { let sum = 0 let result = 0 for(let i in this.girls){ sum += this.girls[i].age } result = sum/this.girls.length; return result }, es62: function () { let sum = 0 let result = 0 for(let girl of this.girls){ sum += girl.age } result = sum/this.girls.length; return result } } }) 4、var没有块级作用域,let有块级作用域
let app = new Vue({
el: '#app',
data: {//定义数据
message: '哪吒'
}
})
// 因为ES5前if和for都没有块级作用域,所以很多时候引入function的块级作用域
var btns = document.getElementsByTagName('button');
for(var i = 0;i (function (i) { btns[i].addEventListener('click',function () { console.log('第'+i+'个按钮被点击'); }) })(i) } const btns = document.getElementsByTagName('button') for(let i = 0;i btns[i].addEventListener('click',function () { console.log('第'+i+'个按钮被点击'); }) } 5、const 常量的定义 6、v-on的参数问题
let app = new Vue({
el: '#app',
data: {//定义数据
message: '哪吒',
abc: 123
},
methods: {
btnClick(abc,event){
console.log(abc, event);
}
}
})
7、v-on修饰符
stop - 调用 event.stopPropagation(),停止冒泡。prevent - 阻止默认事件修饰符capture - 添加事件侦听器时使用 capture 模式。self - 只能在event.target是当前元素自身时触发处理函数{keyCode | keyAlias} - 只当事件是从特定键触发时才触发回调。native - 监听组件根元素的原生事件。once - 使事件只能被触发一次left - (2.2.0) 只当点击鼠标左键时触发。right - (2.2.0) 只当点击鼠标右键时触发。middle - (2.2.0) 只当点击鼠标中键时触发。passive - (2.3.0) 以 { passive: true } 模式添加侦听器
8、v-if
let app = new Vue({
el: '#app',
data: {//定义数据
message: '哪吒',
isUser: true
}
})
注:通过key=username解决input复用问题,input复用机制是vue底层为了缓存而制定的策略。
9、v-show
10、v-for遍历对象
- {{item}}
- {{key}}-{{value}}
let app = new Vue({
el: '#app',
data: {//定义数据
message: '哪吒',
user: {
name: '哪吒',
age: 18,
address: '大连'
}
}
})
key的作用主要是为了高效的更新虚拟DOM。
11、哪些数组的方法是响应式的
- {{item}}
let app = new Vue({
el: '#app',
data: {//定义数据
message: '哪吒',
girls: [
'比比东','云韵','美杜莎','雅妃'
]
},
methods: {
// 响应式方法简介
btnClick(){
//1.push方法
this.girls.push('哪吒')
//2.pop():删除数组中的最后一个元素
this.girls.pop()
//3.shift():删除数组中的第一个元素
this.girls.shift()
//4.unshift():在数组最前面添加元素
this.girls.unshift('哪吒')
this.girls.unshift('CSDN','哪吒')
//5.splice():删除元素/插入元素/替换元素
//删除元素:第二个参数表示你要删除几个元素
//插入元素:第二个参数,传入0,后面加上要插入的元素
//替换元素:第二个参数,表示我们要替换几个元素,后面是用于替换前面元素的新元素
//splice(start)
this.girls.splice(2,2,'无情','冷血')
//6.sort()
this.girls.sort()
//7.reverse()
this.girls.reverse()
//8.注意:通过索引值修改数组中的元素,不是响应式的
this.girls[0] = '云芝'
//9.set(要修改的元素,索引值,修改后的值)
Vue.set(this.girls,0,'云芝啊')
}
}
})
非响应式“云芝”写入失败。
响应式,“云芝”写入成功
二、购物车综合案例
需求分析:通过动态加载数据,价格格式化展示,数量可增可减,可移除购物车,可清空购物车。
1、index.html
| 名字 | 年龄 | 价格 | 数量 | 技能 | 操作 | |
|---|---|---|---|---|---|---|
| {{item.id}} | {{item.name}} | {{item.age}} | {{item.price | showPrice}} |
{{item.count}} |
{{item.skill}} |
总价格:{{totalPrice | showPrice}}
购物车为空
2、index.js
const app = new Vue({
el: '#app',
data: {
girls: [
{
id: 1,
name: '比比东',
age: 18,
count: 1,
skill: '不死之身',
price: 100.00
},{
id: 2,
name: '千仞雪',
age: 20,
count: 1,
skill: '天使圣剑',
price: 25.00
},{
id: 3,
name: '美杜莎',
age: 17,
count: 1,
skill: '美杜莎的凝望',
price: 19.00
},{
id: 4,
name: '云韵',
age: 25,
count: 1,
skill: '风之极陨杀',
price: 1999.99
},{
id: 5,
name: '雅妃',
age: 21,
count: 1,
skill: '红衣诱惑',
price: 68.00
}
]
},
methods :{
increment(index){
this.girls[index].count++
},
decrement(index){
this.girls[index].count--
},
removeHandler(index){
this.girls.splice(index, 1)
}
},
computed: {
totalPrice(){
let totalPrice = 0;
for(let i=0;i totalPrice += this.girls[i].price * this.girls[i].count; } return totalPrice; } }, filters: { showPrice(price) { return '$' + price.toFixed(2) } } }) 3、style.css table { border: 1px solid #e9e9e9; border-collapse: collapse; border-spacing: 0; } th,td { padding: 8px 16px; border: 1px solid #e9e9e9; text-align: left; } th { background-color: #f7f7f7; color: #5c6b77; font-weight: 600; } 4、实现效果 通过移除,清空购物车。 🍅 作者简介:哪吒,CSDN2021博客之星亚军🏆、新星计划导师✌、博客专家💪 🍅 哪吒多年工作总结:Java学习路线总结,搬砖工逆袭Java架构师 🍅 关注公众号【哪吒编程】,回复1024,获取Java学习路线思维导图、大厂面试真题、加入万粉计划交流群、一起学习进步 上一篇:Vue知识体系总结 2:Vue动态绑定v-bind 下一篇:Vue知识体系总结 4:Vue组件化开发 关注公众号,备注1024,获取Java学习路线思维导图、加入万粉计划交流群