[Vue.js]学习笔记-Vue.js样式绑定-class属性绑定-计算属性
导读部分
教程部分
Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 另: Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。
class 与 style 是 HTML 元素的属性,用于设置元素的样式, 在Vue.js中, 我们可以通过v-bind来设置样式属性。 Vue.js v-bind 在处理 class 和 style 时, 表达式的结果类型除了字符串之外,还可以是对象或数组。
而我们在进行class的属性绑定时, 我们可以在对象中返回一个计算属性, 来控制绑定样式的显示等。
计算属性的的使用, 是一个很常用且强大的模式, 可以将页面的html 代码简单化 ,逻辑在js中进行处理, 方便后期的维护与代码检查。
下面我们通过实例,来进行学习计算属性作为返回对象在样式绑定中的应用
实例:
[HTML] 纯文本查看 复制代码 <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 苏飞论坛(sufeinet.com)</title>
<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
<style>
.base {
width: 100px;
height: 100px;
}
.active {
background: green;
}
.text-danger {
background: red;
}
</style>
</head>
<body>
<div id="app">
<div v-bind:class="classObject"></div>
</div>
<script>
new Vue({
el: '#app',
data: {
isActive: true,
error: {
value: true,
type: 'fatal'
}
},
computed: {
classObject: function () {
return {
base: true,
active: this.isActive && !this.error.value,
'text-danger': this.error.value && this.error.type === 'fatal',
}
}
}
})
</script>
</body>
</html>
运行结果如下:
在此时,我们只要改变绑定数据的值,就能轻松的修改页面显示的背景色 如: 将error.type的值设置为: fatal2 , 运行的结果会是是什么样子呢, 如下图:
代码实例如下: [HTML] 纯文本查看 复制代码 <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 苏飞论坛(sufeinet.com)</title>
<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
<style>
.base {
width: 100px;
height: 100px;
}
.active {
background: green;
}
.text-danger {
background: red;
}
</style>
</head>
<body>
<div id="app">
<div v-bind:class="classObject"></div>
</div>
<script>
new Vue({
el: '#app',
data: {
isActive: true,
error: {
value: true,
type: 'fatal2'
}
},
computed: {
classObject: function () {
return {
base: true,
active: this.isActive && !this.error.value,
'text-danger': this.error.value && this.error.type === 'fatal',
}
}
}
})
</script>
</body>
</html>
分析上例可以看到, 在计算属性中, 'text-danger': this.error.value && this.error.type === 'fatal', 当将error.type设置为fatal2时,text-danger:计算结果为false。 故在页面上绑定的class属性中,没有text-danger。 而text-danger 的作用则是给div添加背景色 red, 故修改内容后,实例运行结果为一个空白的页面
|