语法糖的写法@。。。实现一个简单计数器。
<body> <div id="app"> <h2>{{message}}</h2> <button @click="increment">+</button> <button @click="decrement">-</button> </div> <script> const app = new Vue({ el: "#app", data: { message: 0 }, methods: { increment() { this.message++ }, decrement() { this.message-- } } }) </script> </body>
@click="increment"
@click="increment()
@click="btn2click(10)
@click="btn3click(123,$event)
<body> <div id="app"> <h2>{{message}}</h2> <!-- -------------------------------------------------------- --> <button @click="increment">1</button> <button @click="increment()">2</button> <!-- -------------------------------------------------------- --> <button @click="btn2click(10)">3</button> <!-- -------------------------------------------------------- --> <button @click="btn3click(123,$event)">4</button> <!-- -------------------------------------------------------- --> </div> <script> const app = new Vue({ el: "#app", data: { message: 0 }, methods: { increment() { this.message++ }, btn2click(event) { console.log(event); this.message += event }, btn3click(abc, event) { console.log(abc, event); // this.message += event } } }) </script> </body>
stop修饰符,阻止冒泡。
<button @click.stop="butclickstop">添加stop</button>
.prevent修饰符,阻止自动提交
<form action="baidu">
<input type="submit" value="提交添加prevent" @click.prevent="subclickprevent">
</form>
键盘修饰符
<input type="text" @keyUp.enter="keyup">
.once只触发一次
<button @click.once="btn2once">只触发一次</button>
最基础的判断操作
<h2> <p v-if="score>90">优秀</p> <p v-else-if="score>70">良好</p> <p v-else-if="score>60">及格</p> <p v-else>不及格</p> </h2>
在使用这种判断的时候,也可以使用计算属性computed
computed: { result() { let showScore = ''; if (this.score > 90) { showScore = '优秀' } else if (this.score > 70) { showScore = '良好' } else if (this.score > 60) { showScore = '及格' } else { showScore = '不及格' } return showScore } }
v-if 当条件为false时,不会存在于DOM中
v-show 当条件为false时,添加display:none;
<body> <div id="app"> <!-- v-if 当条件为false时,不会存在于DOM中 v-show 当条件为false时,添加display:none; --> <h2 id="aaa" v-if="isShow">{{message}}</h2> <h2 id="bbb" v-show="isShow">{{message}}</h2> <!-- 在显示和隐藏切换频率很高,使用v-show --> </div> <script> const app = new Vue({ el: '#app', data: { message: '你好!', isShow: true } }) </script> </body>
点击按钮,切换账户的类型
思路:
- 写上两组账号类型的标签
- 使用v-if,如果isuser=true,则显示用户账号;默认是用户账号。
- 给按钮绑定点击事件,对isuser取反
- 添加key解决复用
<body> <div id="app"> <span v-if="isUser"> <label for="username">用户账号</label> <!-- 添加Key解决复用问题 --> <input type="text" id="username" placeholder="用户账号" key="username"> </span> <span v-else> <label for="email">用户邮箱</label> <input type="text" id="email" placeholder="用户邮箱" key="eamil"> </span> <button @click="isUser = !isUser">切换类型</button> </div> <script type="text/javascript"> let app = new Vue({ el: '#app', data: { isUser: true } }) </script> </body>
<body> <div id="app"> <!-- 在遍历过程中,没有使用索引值(下标值) --> <ul> <li v-for="item in names">{{item}}</li> </ul> <hr> <!-- 在遍历过程中,使用索引值(下标值) --> <ul> <li v-for="(item,index) in names">{{index +1}}.{{item}}</li> </ul> </div> <script> const app = new Vue({ el: '#app', data: { names: ['张三', 'krbe', 'james', 'jack'] } }) </script> </body>
<body> <div id="app"> <!-- 在遍历对象过程中,如果只是获取一个值,那么获取到的是value --> <ul> <li v-for="item in info">{{item}}</li> </ul> <hr> <!-- 在遍历对象过程中,获取key和value (value,key)--> <ul> <li v-for="(value,key) in info">{{key}}:{{value}}</li> </ul> <hr> <!-- 在遍历对象过程中,获取key和value 和index (value,key,index)--> <ul> <li v-for="(value,key,index) in info">{{index}}---{{key}}---{{value}}</li> </ul> </div> <script> const app = new Vue({ el: '#app', data: { info: { name: '张三', age: 18, height: 888 } } }) </script> </body>