1、插值表达式

  1. <script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
  2. <div id="app">
  3. {{msg}}
  4. </div>
  5. <script>
  6. var vm = new Vue({
  7. el:"#app",
  8. data:{
  9. msg:"hello world"
  10. }
  11. })
  12. </script>

2、for-key

  1. <div id="app">
  2. <p v-for="(item,index) of arr" :key="item.id"><input type="checkbox" />{{item.name}}</p>
  3. </div>
  4. <script>
  5. var vm = new Vue({
  6. el:"#app",
  7. data(){
  8. return {
  9. arr:[
  10. {id:001,name:"vivo"},
  11. {id:002,name:"oppo"},
  12. {id:003,name:"huawei"}
  13. ]
  14. }
  15. }
  16. })
  17. </script>

3、v-if+v-show

  1. v-if DOM删除
  2. v-show DOM隐藏
  1. <div id="app">
  2. <p v-if="flag">显示隐藏</p>
  3. <p v-show="isShow">显示隐藏 SHOW</p>
  4. <div v-html="msg">{{msg}}</div>
  5. </div>
  6. <script>
  7. var vm = new Vue({
  8. el:"#app",
  9. data(){
  10. return {
  11. flag:true,
  12. isShow:true,
  13. msg:"<h1>hello world</h1>"
  14. }
  15. }
  16. })
  17. </script>

4、v-for必须加:key

  1. data(){
  2. return{
  3. arr:["html","css","javascript"]
  4. };
  5. },
  6. <p v-for="item of arr" :key="item">{{item}}</p>

5、事件@click

  1. //事件集中写在methods属性中
  1. <div @click="handleClick">{{msg}}</div>
  2. <script>
  3. export default{
  4. name:"app",
  5. data(){
  6. return {
  7. msg:"hello world!",
  8. };
  9. },
  10. //事件集中写在methods属性中
  11. methods:{
  12. handelClick(){
  13. this.msg = "change"
  14. }
  15. }
  16. }
  17. </script>

6、样式绑定class

  1. <div id="app">
  2. <p :class="{active:isActive}">hello world</p>
  3. <p :class='["one",flag?"two":""]'></p>
  4. </div>
  5. <script>
  6. var vm = new Vue({
  7. el:"#app",
  8. data(){
  9. return {
  10. isActive:true,
  11. flag:true
  12. }
  13. }
  14. })
  15. </script>

7、v-model可以实现双向数据绑定

  1. <!-- v-model可以实现双向数据绑定 -->
  2. <!-- @keyup.enter 可以触发enter -->
  1. <script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
  2. <script src="https://cdn.bootcss.com/axios/0.19.0-beta.1/axios.js"></script>
  3. <!-- v-model可以实现双向数据绑定 -->
  4. <!-- @keyup.enter 可以触发enter -->
  5. <div id="app">
  6. <input type="text" v-model="keyword" @keyup.enter="handleUp" />
  7. {{keyword}}
  8. </div>
  9. <script>
  10. var vm = new Vue({
  11. el:"#app",
  12. data(){
  13. return {
  14. keyword:"成都"
  15. }
  16. },
  17. methods:{
  18. handleUp(){
  19. console.log(this.keyword)
  20. var url = `https://music.aityp.com/search?keywords=${this.keyword}`
  21. axios.get(url).then(res=>{
  22. console.log(res)
  23. })
  24. }
  25. }
  26. })
  27. </script>

8、表单

8-1、checkbox为多选时,v-model的值设置为数组

  1. <div id="app">
  2. <h2>爱好</h2>
  3. <div>
  4. <input type="checkbox" value="足球" v-model="likes">足球
  5. <input type="checkbox" value="篮球" v-model="likes">篮球
  6. <input type="checkbox" value="台球" v-model="likes">台球
  7. </div>
  8. </div>
  9. <script>
  10. var vm = new Vue({
  11. el:"#app",
  12. data:{
  13. likes:[] }
  14. })
  15. </script>

8-2、radio

  1. <div id="app">
  2. <h2>性别</h2>
  3. <div>
  4. <input type="radio" id="one" value="boy" v-model="sex">男
  5. <input type="radio" id="one" value="girl" v-model="sex">女
  6. </div>
  7. {{sex}}
  8. </div>
  9. <script>
  10. var vm = new Vue({
  11. el: "#app",
  12. data: {
  13. sex: ""
  14. }
  15. })
  16. </script>

8-3、selected

  1. <div id="app">
  2. <h2>城市</h2>
  3. <select v-model="city">
  4. <option disabled value="">请选择</option>
  5. <option>武汉市</option>
  6. <option>荆州市</option>
  7. <option>长沙市</option>
  8. </select>
  9. {{city}}
  10. </div>
  11. <script>
  12. var vm = new Vue({
  13. el: "#app",
  14. data: {
  15. city: ""
  16. }
  17. })
  18. </script>
  1. //多选
  2. <select v-model="city" multiple>
  3. </select>

8-4、让输入框的数值为number

  1. <input v-model.number="age" type="number">

8-5、trim

  1. 自动过滤用户输入的首尾空白字符,可以给 v-model 添加 trim 修饰符
  2. <input v-model.trim="msg">

8-6、checkbox和change事件

  1. checkbox执行点击事件时用change事件取代,这样能保证视图和数据同步
  1. <div id="app">
  2. <input type="checkbox" v-model="keyword" @change="change" />
  3. </div>
  4. <script>
  5. var vm = new Vue({
  6. el:"#app",
  7. data:{
  8. keyword:false
  9. },
  10. methods:{
  11. change(){
  12. console.log(this.keyword)
  13. }
  14. }
  15. })
  16. </script>

8、计算属性

  1. //当参与计算的值发生改变时,总值会改变
  1. <div id="app">
  2. {{total}}
  3. </div>
  4. <script>
  5. var vm = new Vue({
  6. el:"#app",
  7. data(){
  8. return {
  9. firstName:"zhang",
  10. lastName:"san"
  11. }
  12. },
  13. /* 当参与计算的值发生改变时,总值会改变 */
  14. computed: {
  15. total(){
  16. return this.firstName + this.lastName
  17. }
  18. },
  19. })
  20. </script>
  1. <template>
  2. <div>
  3. <!-- 最多只能输入6的字符 -->
  4. <input type="text" v-model="word" placeholder="请输入"> {{msg}}
  5. </div>
  6. </template>
  7. <script>
  8. export default {
  9. name: "Home",
  10. data(){
  11. return {
  12. word:""
  13. }
  14. },
  15. computed:{
  16. msg(){
  17. if(this.word.length>6){
  18. return "最多不能超过8的字符"
  19. }else if(this.word.length<3){
  20. return "不能少于3个字符"
  21. }else{
  22. return "合法"
  23. }
  24. }
  25. }
  26. };
  27. </script>

9、侦听器

  1. 监听data中的值,只要值改变函数就会触发
  1. <div id="app">
  2. {{total}}
  3. </div>
  4. <script>
  5. var vm = new Vue({
  6. el:"#app",
  7. data(){
  8. return {
  9. firstName:1,
  10. lastName:2,
  11. total:3
  12. }
  13. },
  14. /* 侦听器 监听data中的值,只要值改变函数就会触发 */
  15. watch:{
  16. firstName(){
  17. this.total = this.firstName + this.lastName
  18. },
  19. lastName(){
  20. this.total = this.firstName + this.lastName
  21. }
  22. }
  23. })
  24. </script>