Vue的模板、指令与修饰符

Vue的模板

模板template三种写法

Vue完整版,写在HTML里

<div id="app">
   {{n}}
   <button @click="add">+1</button>
</div>
import Vue from "vue";
Vue.config.productionTip = false;
new Vue({
  data() {
    return {
      n: 0
    };
  },
  methods: {
    add() {
      this.n += 1;
    }
  }
}).$mount("#app");

Vue完整版,写在选项中

//html
<div id="app">
</div>
//js
//注意一个细节,div#app会被替代
new Vue({
  template: `
    <div>
    {{n}}
    <button @click="add">+1</button>
    </div>
  `,
  data() {
    return {
      n: 0
    };
  },
  methods: {
    add() {
      this.n += 1;
    }
  }
}).$mount("#app");

Vue非完整版,配合xxx.vue文件

//Demo.vue
<template>
    <div class="red">
        这里是Demo的内部{{msg}}
        <button @click="fn">call fn</button>
    </div>
</template>

<script>
export default {
    props:['msg','fn']
}
</script>
<style scoped>
.red{
    color: red;
    border: 1px solid blue;
}
</style>

//main.js
const Vue = window.Vue;
Vue.config.productionTip = false;
import Demo from './Demo.vue'
new Vue({
    components:{Demo},
    data(){
        return {
            visible:true,
            n:0
        }
    },
    template:`
    <div>
        {{n}}
        <Demo :msg="n" :fn=" add "/>
    </div>
    `,
    methods:{
        add(){
            this.n += 1;
        },
        toggle(){
            this.visible = !this.visible
        }
    }
}).$mount("#xiaobangsky");

模板总结

  • 把HTML模板叫做template
  • 使用XML语法(注意不是HTML语法)
  • 使用{{}}插入表达式
  • 使用v-html v-on v-bind等指令操作DOM
  • 使用v-if v-for等指令实现条件判断和循环

Vue的指令(Directive)

指令

  • 以v-开头的就是指令
<div v-on:"click=add"></div>
  • 语法
//v-指令名,如v-on:"click=add"
//如果值里面没有特殊修饰符,可不加引号
//有些指令没有参数值,如 v-pre
//有些指令没有值,如v-on:click.prevent

Vue的修饰符

官方文档:Vue修饰符,里面说vue .sync 修饰符以前存在于vue1.0版本里,但是在在 2.0 中移除了 .sync 。但是在 2.0 发布之后的实际应用中,我们发现 .sync 还是有其适用之处,比如在开发可复用的组件库时。我们需要做的只是让子组件改变父组件状态的代码更容易被区分。从2.3.0 起我们重新引入了.sync 修饰符,但是这次它只是作为一个编译时的语法糖存在。它会被扩展为一个自动更新父组件属性的 v-on 监听器

代码示例

//html
<div id="app">
  <div>{{bar}}</div>
  <my-comp :foo.sync="bar"></my-comp>
  <!-- <my-comp :foo="bar" @update:foo="val => bar = val"></my-comp> --></div>
//js
Vue.component("my-comp", {
  template: '<div @click="increment">点我+1</div>',
  data: function () {
    return { copyFoo: this.foo };
  },
  props: ["foo"],
  methods: {
    increment: function () {
      this.$emit("update:foo", ++this.copyFoo);
    }
  }
});
new Vue({
  el: "#app",
  data: { bar: 0 }
});

有些指令支持修饰符

  • @click.stop="add"表示阻止事件传播/冒泡
  • @click.prevent="add"表示阻止默认动作
  • @click.stop.prevent="add"同时表示两种动作

修饰符列表

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaobangsky

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值