这节主要学习methods
属性, 这个名字是固定的,它是一个对象,用于存储各种方法。{{方法名()}}
就可以调用相应的方法。
示例
<!DOCTYPE html>
<html class="no-js">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>方法</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<h2>{{message}}</h2>
<h2>{{greeting('morning')}}</h2>
</div>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
message: 'hello vue',
},
methods: {
greeting:function(time){
return 'good ' + time + '!';
}
}
})
</script>
</body>
</html>
如果要在当前对象中拿data的属性,直接使用Vue实例化的对象.name就可以了,调用方法时也是直接拿对应的方法。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue的方法练习</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<h2>{{greeting('Afternoon')}}</h2>
<h2>{{message}}</h2>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!',
name: '软件1721'
},
methods: {
greeting: function(time) {
return 'Good ' + time + '!' + this.name;
}
}
})
</script>
</body>
</html>
v-on指令
分别点击“隐藏/显示”按钮可以切换内容的显示:
<!DOCTYPE html>
<html class="no-js">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>v-on指令练习2-</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<h2 v-if="show">{{name}}</h2>
<button @click="handleClick">隐藏/显示</button>
</div>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
name: '软件1721',
show: true,
},
methods: {
handleClick:function() {
this.show = !this.show;
}
},
})
</script>
</body>
</html>
语法糖:
v-on:click
可以简写为@click
喜欢/不喜欢 练习
<!DOCTYPE html>
<html class="no-js">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>v-on指令练习5-喜欢的练习</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<link rel="stylesheet" href="/vue-basic/css/font-awesome.min.css">
<style type="text/css">
.like{
width: 120px;
height: 50px;
color: rgb(234,111,90);
border-radius: 25px;
font-size: 14px;
background-color: #FFF;
border: 1px solid rgb(234,111,90);
outline: none;
}
.dislike{
width: 120px;
height: 50px;
color: #FFF;
border-radius: 25px;
font-size: 14px;
background-color: rgb(234,111,90);
border: 1px solid rgb(234,111,90);
/* 点击取消外边框 */
outline: none;
}
</style>
</head>
<body>
<div id="app">
<button class="dislike" v-show="status == false" @click="like">
<i class="icon-heart-empty" ></i> 喜欢 | {{number}}
</button>
<button class="like" v-show="status" @click="dislike">
<i class="icon-heart" ></i> 不喜欢 | {{number}}
</button>
</div>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
status: true,
number: 8,
},
methods: {
like:function() {
this.status = !this.status;
this.number += 1;
},
dislike:function() {
this.status = !this.status;
this.number -= 1;
}
},
})
</script>
</body>
</html>
