2019.12.18,天气晴,最近升温太厉害,感觉已经快到夏天了。。。
目录
讲点vue中的样式(1min)
在vue中,可以不用<div class="aaa bbb"></div>
用<div :class="['aaa','bbb']"></div>
比如:
<style>
.red {
color: red;
}
.thin {
font-weight: 200;
}
.italic {
font-style: italic;
}
.active {
letter-spacing: 0.5em;
}
</style>
<body>
<!-- 第一种使用方式,直接传递一个数组,注意: 这里的 class 需要使用 v-bind 做数据绑定 -->
<h1 :class="['thin', 'italic']">这是一个很大很大的H1,大到你无法想象!!!</h1>
</body>
当然也可以在:class中有三目运算符了
<!-- 在数组中使用三元表达式 -->
<h1 :class="['thin', 'italic', flag ? 'active' : '']">这是一个很大很大的H1,大到你无法想象!!!</h1>
如果flag为true就会使用.active样式,否则为空不使用.active
又或者
<!-- 在数组中使用 对象来代替三元表达式,提高代码的可读性 -->
<h1 :class="['thin', 'italic', {'active':flag} ]">这是一个很大很大的H1,大到你无法想象!!!</h1>
和上面一样的意思
或者直接用对象控制样式
<style>
.red {
color: red;
}
.thin {
font-weight: 200;
}
.italic {
font-style: italic;
}
.active {
letter-spacing: 0.5em;
}
</style>
<body>
<div id="app">
<!-- 在为 class 使用 v-bind 绑定 对象的时候,对象的属性是类名,由于 对象的属性可带引号,也可不带引号,所以 这里我没写引号; 属性的值 是一个标识符 -->
<h1 :class="classObj">这是一个很大很大的H1,大到你无法想象!!!</h1>
</div>
<script>
// 创建 Vue 实例,得到 ViewModel
var vm = new Vue({
el: '#app',
data: {
flag: true,
classObj: { red: true, thin: true, italic: false, active: false }
},
methods: {}
});
</script>
</body>
</html>
样式也可以在vue实例的data中写出来,如下:
<body>
<div id="app">
<!-- 对象就是无序键值对的集合 -->
<h1 :style="styleObj1">这是一个h1</h1>
<h1 :style="[ styleObj1, styleObj2 ]">这是一个h1</h1>
</div>
<script>
// 创建 Vue 实例,得到 ViewModel
var vm = new Vue({
el: '#app',
data: {
styleObj1: { color: 'red', 'font-weight': 200 },
styleObj2: { 'font-style': 'italic' }
},
methods: {}
});
</script>
</body>
==============我到底在记什么流水账?反正扫一眼就看完了,一般用第一种就行了===================
关于v-for(30s)
注意点1:记得遍历对象的时候是遍历对象里面的键值对
<div id="app">
<!-- 注意:在遍历对象身上的键值对的时候, 除了 有 val key ,在第三个位置还有 一个 索引 -->
<p v-for="(val, key, i) in user">值是: {{ val }} --- 键是: {{key}} -- 索引: {{i}}</p>
</div>
<script>
// 创建 Vue 实例,得到 ViewModel
var vm = new Vue({
el: '#app',
data: {
user: {
id: 1,
name: '托尼·屎大颗',
gender: '男'
}
},
methods: {}
});
</script>
运行结果
值是: 1 --- 键是: id -- 索引: 0
值是: 托尼·屎大颗 --- 键是: name -- 索引: 1
值是: 男 --- 键是: gender -- 索引: 2
这里v-for的in和of没区别,可以替换
注意点2:在vue中,for...in和for...of没有区别!
在js中的使用如下:
【JavaScript】for、forEach 、for in、each循环详解
在vue中,可参考官网
注意点3:如果使用 v-for 迭代数字的话,前面的 count 值从 1 开始,不是从0开始
<div id="app">
<!-- in 后面我们放过 普通数组,对象数组,对象, 还可以放数字 -->
<!-- 注意:如果使用 v-for 迭代数字的话,前面的 count 值从 1 开始 -->
<p v-for="count in 3">这是第 {{ count }} 次循环</p>
</div>
运行结果
这是第 1 次循环
这是第 2 次循环
这是第 3 次循环
讲点v-for喜欢出错的情况吧(3min)
<div id="app">
<div>
<label>Id:
<input type="text" v-model="id">
</label>
<label>Name:
<input type="text" v-model="name">
</label>
<input type="button" value="添加" @click="add">
</div>
<p v-for="item in list">
<input type="checkbox">{{item.id}} --- {{item.name}}
</p>
</div>
<script>
// 创建 Vue 实例,得到 ViewModel
var vm = new Vue({
el: '#app',
data: {
id: '',
name: '',
list: [
{ id: 1, name: '李斯' },
{ id: 2, name: '嬴政' },
{ id: 3, name: '赵高' },
{ id: 4, name: '韩非' },
{ id: 5, name: '荀子' }
]
},
methods: {
add() { // 添加方法
this.list.unshift({ id: this.id, name: this.name })
}
}
});
</script>
运行结果:
那么我们需要处理的是for循环绑定id了,解决方案如下:
<!-- 注意: v-for 循环的时候,key 属性只能使用 number或者string类型 -->
<!-- 注意: key 在使用的时候,必须使用 v-bind 属性绑定的形式,指定 key 的值 -->
<!-- 在组件中,使用v-for循环的时候,或者在一些特殊情况中,如果 v-for 有问题,必须 在使用 v-for 的同时,指定 唯一的 字符串/数字 类型 :key 值 -->
<p v-for="item in list" :key="item.id">
<input type="checkbox">{{item.id}} --- {{item.name}}
</p>
这样就ok了,始终跟着id勾,不会跑了
===============Talk is cheap, show me the code================