vue学习笔记(二)
1. 通过属性绑定v-bind为元素设置class样式
一共有以下几种方法:
1.1 直接传递一个数组
1.2 数组中使用三元表达式
1.3 在数组中使用对象代替三元表达式
1.4 直接使用对象
代码如下:
1 <style> 2 .red { 3 color: red; 4 } 5 .thin { 6 font-weight: 200; 7 } 8 .italic { 9 font-style: italic; 10 } 11 .active { 12 letter-spacing: 0.2em; 13 } 14 </style>
1 <div id="app"> 2 <!-- 传统写法 --> 3 <h1 class='red thin'>冲冲冲!</h1> 4 <!-- 1. 直接传递一个数组 --> 5 <h1 :class="['red', 'thin', 'italic']">冲冲冲!</h1> 6 <!-- 2. 数组中使用三元表达式 --> 7 <h1 :class="['red', 'thin', flag ? 'active' : '']">冲冲冲!</h1> 8 <!-- 3. 在数组中使用对象代替三元表达式 --> 9 <h1 :class="['red', 'thin', {'active': flag}]">冲冲冲!</h1> 10 <!-- 4. 直接使用对象 --> 11 <h1 :class="{italic: true, thin: false, active: true}">冲冲冲!</h1> 12 <h1 :class="classObj">冲冲冲!</h1> 13 </div>
<script>
var vm = new Vue({
el: '#app',
data: {
flag: true,
classObj: {italic: true, thin: false, active: true}
}
})
</script>
界面效果:

2. v-for 可以循环普通数组、对象数组、对象和数字,下面两个例子是循环对象和迭代数字:
2.1 循环对象:
<div id="app">
<h1 v-for="(val, key, i) in list">键: {{key}} 值: {{val}} 索引: {{i}}</h1>
</div>
<script>
var vm = new Vue({
el: '#app',
data: {
list: {
id: 1,
name: "郭富城",
gender: "男"
}
}
})
</script>

2.2 迭代数字:从1开始
<p v-for="count in 10">这是第{{count}}次</p>

3. 过滤器
vue.js支持自定义一些过滤器,可以格式化文本。用在两个地方:mustahc插值、v-bind
过滤器的语法:
Vue.filter("过滤器名称", (data) => { // 第一个参数是管道前面传来的数据
return data + 123;
})
过滤器调用的格式:
{{ name | 过滤器名称 }}
示例:
<div id="app">
<h1>{{ msg | reverse}}</h1>
</div>
<script> Vue.filter('reverse', (data) => { return data.replace(/[\d]/g, '*') }) var vm = new Vue({ el: '#app', data: { msg: "12345白天不懂夜的黑54321" } }) </script>
效果如下:

过滤器可以传多个参数:
<div id="app">
<h1>{{ msg | format('哈', '嘿')}}</h1>
</div>
Vue.filter('format', (data, arg, arg2) => {
return data.replace(/[\d]/g, arg + arg2)
})
var vm = new Vue({
el: '#app',
data: {
msg: "12345白天不懂夜的黑54321"
}
})
效果如下:

过滤器可以多次调用,按顺序对原数据进行处理:
<div id="app">
<h1>{{ msg | format('哈', '嘿') | test('++++++') }}</h1>
</div>
Vue.filter('test', (data, arg) => {
return data + arg;
})
效果如下:

生活是痛苦的白天,死亡是凉爽的夜晚。

浙公网安备 33010602011771号