网站首页 > 基础教程 正文
1、属性绑定
v-bind的使用目的:对标签内属性赋值时可以使用data中的变量(会动态改变或者说动态处理属性值)。
v-bind指令用法:
<a v-bind:href="url"> 跳转 </a>
v-bind缩写形式:
<a :href="url"> 跳转 </a>
<!DOCTYPE html>
<html lang="en">
<body>
<div id="app">
<a v-bind:href="url">百度</a>
</div>
<script type="text/javascript" src="vue.js"></script>
<script type="text/javascript">
var vm = new Vue({
el:'#app',
data:{
url:'http://www.baidu.com'
}
});
</script>
</body>
</html>
v-model的底层实现原理
v-model指令的本质:其实相当于是v-bind,v-on的结合
用v-bind去绑定属性值,将data中初始化的值显示在输入框中;再通过input事件处理值的变化,使输入框中新的值覆盖掉原来的值。所以,
v-bind的作用使通过数据域(model)的变化导致输入域(view)层跟着变化;v-on的作用是输入域(view)层的变化导致数据域(model)层跟着发生变化;这样就实现了双向数据绑定。
<!DOCTYPE html>
<html lang="en">
<body>
<div id="app">
<input type="text" v-bind:value="msg" v-on:input='handle'>
<input type="text" v-bind:value="msg" v-on:input='msg=$event.target.value'>
<input type="text" v-model:value="msg">
<div>{{msg}}</div>
</div>
<script type="text/javascript" src="vue.js"></script>
<script type="text/javascript">
var vm = new Vue({
el:'#app',
data:{
msg:'hello'
},
methods:{
handle:function(event){
this.msg = event.target.value;
}
}
});
</script>
</body>
</html>
2、样式绑定
2.1 class样式处理
对象语法:
<div v-bind:class="{warn:isWarn, error:isError,.....}"></div>
完整代码:
<!DOCTYPE html>
<html lang="en">
<head>
<style type="text/css">
.warn {
border: 1px solid red;
width:100px;
height: 50px;
}
</style>
</head>
<body>
<div id="app">
<div v-bind:class="{warn:isWarn}">警告提示</div>
<button v-on:click="handle">切换</button>
</div>
<script type="text/javascript" src="vue.js"></script>
<script type="text/javascript">
var vm = new Vue({
el:'#app',
data:{
isWarn:true
},
methods:{
handle:function(){
this.isWarn = !this.isWarn;
}
}
});
</script>
</body>
</html>
数组语法:
<div v-bind:class="[warnClass, errorClass]"></div>
完整样例:
<!DOCTYPE html>
<html lang="en">
<head>
<style type="text/css">
.warn {
border: 1px solid red;
width:100px;
height: 50px;
}
.error {
background-color: yellow;
}
</style>
</head>
<body>
<div id="app">
<div v-bind:class="[warnClass, errorClass]">警告提示</div>
<button v-on:click="handle">清空样式</button>
</div>
<script type="text/javascript" src="vue.js"></script>
<script type="text/javascript">
var vm = new Vue({
el:'#app',
data:{
warnClass:'warn',
errorClass:'error'
},
methods:{
handle:function(){
this.warnClass = '';
this.errorClass = '';
}
}
});
</script>
</body>
</html>
class绑定事件的相关细节
对象语法和数组语法结合使用
比如,在以上数组语法的例子的基础上加一个对象语法
<!DOCTYPE html>
<html lang="en">
<head>
<style type="text/css">
.warn {
border: 1px solid red;
width:100px;
height: 50px;
}
.error {
background-color: yellow;
}
.other {
color:blue;
}
</style>
</head>
<body>
<div id="app">
<div v-bind:class="[warnClass, errorClass,{other:active}]">警告提示</div>
<button v-on:click="handle">清空样式</button>
</div>
<script type="text/javascript" src="vue.js"></script>
<script type="text/javascript">
var vm = new Vue({
el:'#app',
data:{
warnClass:'warn',
errorClass:'error',
active:true
},
methods:{
handle:function(){
this.warnClass = '';
this.errorClass = '';
this.active = false;
}
}
});
</script>
</body>
</html>
class绑定的值可以简化操作(数组和对象形式的),使代码的可读性好
<!DOCTYPE html>
<html lang="en">
<head>
<style type="text/css">
.warn {
border: 1px solid red;
width:100px;
height: 50px;
}
.error {
background-color: yellow;
}
.other {
color:blue;
}
</style>
</head>
<body>
<div id="app">
<div v-bind:class="arrClass">数组简化</div>
<div v-bind:class="objClass">对象简化</div>
</div>
<script type="text/javascript" src="vue.js"></script>
<script type="text/javascript">
var vm = new Vue({
el:'#app',
data:{
arrClass:['warn','error'],
objClass:{
other:true
}
}
});
</script>
</body>
</html>
默认的class会被保留,比如以下默认的base样式
<!DOCTYPE html>
<html lang="en">
<head>
<style type="text/css">
.warn {
border: 1px solid red;
width:100px;
height: 50px;
}
.error {
background-color: yellow;
}
.other {
color:blue;
}
.base {
font-size: 25px;
}
</style>
</head>
<body>
<div id="app">
<div class="base" v-bind:class="arrClass">数组简化</div>
</div>
<script type="text/javascript" src="vue.js"></script>
<script type="text/javascript">
var vm = new Vue({
el:'#app',
data:{
arrClass:['warn','error'],
}
});
</script>
</body>
</html>
2.2 style样式处理(样式绑定之内联样式style)
对象语法:
<div v-bind:style='{border:borderStyle}'>对象语法</div>
完整代码:
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<div id="app">
<div v-bind:style='{border:borderStyle,width:widthStyle,height:heightStyle}'>对象语法</div>
</div>
<script type="text/javascript" src="vue.js"></script>
<script type="text/javascript">
var vm = new Vue({
el:'#app',
data:{
borderStyle:'1px solid red',
widthStyle:'100px',
heightStyle:'100px'
}
});
</script>
</body>
</html>
style对象语法的简写形式:
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<div id="app">
<div v-bind:style='objStyle'>对象语法简写</div>
</div>
<script type="text/javascript" src="vue.js"></script>
<script type="text/javascript">
var vm = new Vue({
el:'#app',
data:{
objStyle:{
border:'1px solid red',
width:'100px',
height:'100px'
}
}
});
</script>
</body>
</html>
数组语法:
<div v-bind:style='[objStyle,otherStyle]'>数组语法</div>
完整代码:
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<div id="app">
<div v-bind:style='[objStyle,otherStyle]'>数组语法</div>
</div>
<script type="text/javascript" src="vue.js"></script>
<script type="text/javascript">
var vm = new Vue({
el:'#app',
data:{
objStyle:{
border:'1px solid red',
width:'100px',
height:'100px'
},
otherStyle:{
border:'1px solid red',
backgroundColor:'blue'
}
}
});
</script>
</body>
</html>
猜你喜欢
- 2024-11-09 vuejs开发入门之工具安装和常用指令
- 2024-11-09 如何在Vue中动态添加类名 vue动态添加的元素进行操作
- 2024-11-09 很全面的vue面试题总结 vue面试题2020例子以及答案
- 2024-11-09 vue数据获取和属性设置 vue数据获取放在哪个阶段
- 2024-11-09 「面试题」和Vue.js有关的41个基础问题
- 2024-11-09 vue中动态指令的用法和event事件 vue动态控制hover
- 2024-11-09 VUE自定义指令 自定义指令的应用场景有哪些?
- 2024-11-09 限时分享!今天花了两小时整理出来的 30道 入门到进阶的 Vue 面试题
- 2024-11-09 VUE实战技巧,让你的代码少一点 vue怎么样
- 2024-11-09 Vue项目常见问题以及解决方案 vue项目开发中遇到的问题
- 05-14CSS基础知识(一) CSS入门
- 05-14CSS是什么? CSS和HTML有什么关系?
- 05-14什么是CSS3?
- 05-14CSS如何画一个三角形?
- 05-14初识CSS——CSS三角制作
- 05-14Wordpress建站教程:给图片添加CSS样式
- 05-14HTML和HTML5,css和css3的区别有哪些?
- 05-14Html中Css样式Ⅱ
- 最近发表
- 标签列表
-
- jsp (69)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- mysql教程 (60)
- pythonif (86)
- location.href (69)
- deletesql (62)
- c++模板 (62)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)