操作元素的 class 列表和内联样式是数据绑定的一个常见需求。因为它们都是 attribute,所以我们可以用 v-bind 处理它们:只需要通过表达式计算出字符串结果即可。不过,字符串拼接麻烦且易错。因此,在将 v-bind 用于 class 和 style 时,Vue.js 做了专门的增强。表达式结果的类型除了字符串之外,还可以是对象或数组。
Vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
如果你已经是有经验的前端开发者,想知道 Vue 与其它库/框架有哪些区别,请查看对比其它框架。
以下代码是保存至一个index.html的文档(文件后缀名是.html)中,并非是.vue的文件,当今后学会了一些更vue复杂的应用的时候,比如CLI创建了更复杂的vue应用,并支持单文件组件,那在项目下创建的文件可能就是以.vue为后缀的文件。
操作元素的 class 列表和内联样式是数据绑定的一个常见需求。因为它们都是 attribute,所以我们可以用 v-bind 处理它们:只需要通过表达式计算出字符串结果即可。不过,字符串拼接麻烦且易错。因此,在将 v-bind 用于 class 和 style 时,Vue.js 做了专门的增强。表达式结果的类型除了字符串之外,还可以是对象或数组。
我们可以传给 v-bind:class 一个对象,以动态地切换 class
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>VueClass 与 Style 绑定-绑定 HTML Class-绑定 HTML Class-对象语法</title>
<script src="vue.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<h2>Class 与 Style 绑定</h2>
<!--
操作元素的 class 列表和内联样式是数据绑定的一个常见需求。
因为它们都是 attribute,所以我们可以用 v-bind 处理它们:只需要通过表达式计算出字符串结果即可。
不过,字符串拼接麻烦且易错。因此,在将 v-bind 用于 class 和 style 时,Vue.js 做了专门的增强。
表达式结果的类型除了字符串之外,还可以是对象或数组。
-->
<h3>绑定 HTML Class</h3>
<h4>对象语法</h4>
<div id="app">
<!--
绑定 HTML Class
-->
<!--
对象语法
-->
<!--
我们可以传给 v-bind:class 一个对象,以动态地切换 class:
-->
<div v-bind:class="{ active: isActive }">{{ sitename }}</div>
<!--
上面的语法表示 active 这个 class 存在与否将取决于数据 property isActive 的 truthiness。
你可以在对象中传入更多字段来动态切换多个 class。
此外,v-bind:class 指令也可以与普通的 class attribute 共存。
当有如下模板:
-->
<div
class="static"
v-bind:class="{ active: isActive, 'text-danger': hasError }"
>{{ sitename }}</div>
<!--
和如下 data:
-->
<!--
data: {
isActive: true,
hasError: false
}
-->
<!--
结果渲染为:
-->
<!--
<div class="static active"></div>
-->
<!--
当 isActive 或者 hasError 变化时,class 列表将相应地更新。
例如,如果 hasError 的值为 true,class 列表将变为 "static active text-danger"。
-->
<!--
绑定的数据对象不必内联定义在模板里:
-->
<div v-bind:class="classObject">{{ sitename }}</div>
<!--
data: {
classObject: {
active: true,
'text-danger': false
}
}
-->
<!--
渲染的结果和上面一样。我们也可以在这里绑定一个返回对象的计算属性。这是一个常用且强大的模式:
-->
<!--
<div v-bind:class="classObject"></div>
-->
<!--
data: {
isActive: true,
error: null
},
computed: {
classObject: function () {
return {
active: this.isActive && !this.error,
'text-danger': this.error && this.error.type === 'fatal'
}
}
}
-->
</div>
<script type="text/javascript">
var watchExampleVM = new Vue({
el: '#app',
data: {
sitename: '编程之吧',
isActive: true,
hasError: false,
error: null,
//classObject: {
//active: true,
//'text-danger': false
//}
},
computed: {
classObject: function () {
return {
active: this.isActive && !this.error,
'text-danger': this.error && this.error.type === 'fatal'
}
}
}
})
</script>
</body>
</html>
转载注明:
感谢博主,喝杯咖啡~
感谢博主,喝杯咖啡~
还没有人发表评论