一个项目学习Vue3---Vue模板方法

 内容资源下载:关注公众号(资小库),下载相关资源

分析下面一段代码,学习模板方法的可能的知识

<template>
  <div>
    <div>将下面的msg属性放到上面来:{{ msg }}</div>
    <div v-html="htmlMsg"></div>
    <div v-bind="id">这个地方绑定了一个ID{{ id }}</div>
    <div :id="id">v-bind可以简写为:(冒号)</div>
    <div :id>如果你的属性值=你的字段名称,则可以直接不写,不过似乎一般只有id能用</div>
    <div v-bind:id>这样也可以不过没有:香</div>
    <div :class="bigClass">不止ID一切属性皆可以绑定</div>
    <div :style="textStyle">也可以直接绑定对象,一般用于css等</div>
    <div>如果你要是否支持下面括弧里面是否支持js,就想想你的这个语句是否能直接写在return后面</div>
    <div>{{ num + 1 }}</div>
    <div>{{ ok ? 'YES' : 'NO' }}</div>
    <div>{{ `这里面也可以直接执行函数${hahah(1)}` }}</div>
    <div>学着调用方法</div>
    <button @click="open">点击变猪</button>
    <button v-on:click="open2">这样也可以变</button>
    <div v-if="ok">这里也是ok</div>
    <div v-else>这里是个啥</div>
    <select>
      <option v-for="(item, index) in data">{{ item.id }}</option>
    </select>
    <div>
      <a :[attributeName]="url">这是个链接</a>
      <button v-on:[eventName]="open2">也可以绑定事件</button>
    </div>
    <div>
      <form @submit.prevent="handleSubmit">
        <button type="submit">Submit</button>
      </form>
    </div>
  </div>
</template>

<script lang="ts">
export default {
  data() {
    return {
      msg: '学无止境',
      htmlMsg: '<div>我是被插入的一行代码</div>',
      id: 1,
      bigClass: 'bigClass',
      textStyle: {
        color: 'red',
        with: '100px'
      },
      num: 0,
      ok: true,
      data: [
        {
          id: 1
        },
        {
          id: 2
        }
      ],
      attributeName: 'href',
      url: 'https://www.baidu.com',
      eventName: 'click'
    }
  },
  methods: {
    handleSubmit() {
      // 在这里可以处理表单提交的逻辑
      console.log('Form submitted')
    },
    open() {
      this.msg = '猪'
      this.ok = !this.ok
    },
    open2() {
      this.msg = '猪+1'
      this.ok = !this.ok
    },
    hahah(val) {
      return 'Pag' + val
    }
  }
}
</script>
<style scoped>
.bigClass {
  font-size: 3em;
}
</style>

下面是对上面代码的分析

1.大括号绑定值

<div>将下面的msg属性放到上面来:{{ msg }}</div>
export default {
  data() {
    return {
      msg: '学无止境'
    }
  }
}

当你更改return中的msg的值,你可以很快的发现上面html中大括号里面的内容也会随之发生变化,所以你也可以在

  methods: {
    changeMsg() {
      this.msg = "好好学习"
    }
   }

vue的methids中写一个函数,如果你恰好调用了这个函数,那么你显示的msg的内容将被变为"好好学习",这就是Vue的双向绑定的机制,当然后面所说的所有在return里面的变量都可以进行双向绑定。

2.插入一段HTML

当你想插入一段HTML时候,你会想办法把msg="<div>这就变了</div>.,但是这样在vue中是不被允许的,所以,vue有一个标签v-html可以解决您的问题

<div v-html="htmlMsg"></div>
export default {
  data() {
    return {
      htmlMsg: '<div>我是被插入的一行代码</div>'
    }
  }
}

这样就是插入一行html代码了,当前前面说过,你可以随时利用vue双向绑定的特性,来更改这段变量的内容

3.绑定属性

当我们想绑定id,class,href等这些属性时,你完全可以利用vue实现动态绑定

<div v-bind="id">这个地方绑定了一个ID{{ id }}</div>
<div :id="id">v-bind可以简写为:(冒号)</div>
<div :id>如果你的属性值=你的字段名称,则可以直接不写,不过似乎一般只有id能用</div>
<div v-bind:id>这样也可以不过没有:香</div>
<div :class="bigClass">不止ID一切属性皆可以绑定</div>
<div :style="textStyle">也可以直接绑定对象,一般用于css等</div>
export default {
  data() {
     return {
       id: 1,
       bigClass: 'bigClass',
       textStyle: {
          color: 'red',
          with: '100px'
       },
     }
   }
}
<style scoped>
.bigClass {
  font-size: 3em;
}
.bigClass2 {
  font-size: 5em;
}
</style>

v-bind:的意思是绑定id这个属性,但是你也可以将其简写为:(冒号),所以v-bind:id=”id"和:id=“id"作用是一样的,当然如果你的属性和你的绑定的值是一样的,你可以直接简写为:id,她就等于:id = "id"

不止id,你也可以绑定class和style等其他属性,例如:class="bigClass" ,意思是这个class绑定了return中的class,你完全可以在mothods中写一个方法,让return中的bigClass:”bigClass2“,那么你的字体会从3em变成5em

style的绑定也很特殊,你直接可以绑定一个属性,这个属性你可以直接在你的js中写成一个类似JSON的值,他自己就行生成你想要的风格,当然你也可以通过

this.textStyle.color="blue"

将你的字变成蓝色

4.大括弧支持的内容

{{}}双括弧中不止支持双向绑定一个值,还绑定

<div>{{ num + 1 }}</div>
<div>{{ ok ? 'YES' : 'NO' }}</div>
export default {
  data() {
     return {
        num: 0,
        ok: true,
     }
   }
}

如上面所示,他是支持我们使用算术运算和三元表达式的,但是

<div>{{if(num>0){return true}}}</div>

这种语句是不支持的,所以这种语句应该使用三元表达式代替他

括弧里面是否支持js,就想想你的这个语句是否能直接写在return后面,这是vue的一个标准

大括弧中也可以执行函数

<div>{{ `这里面也可以直接执行函数${hahah(1)}` }}</div>

我们可以看到$()中有一个hahah方法,他就对应methods中的hahah方法

hahah(val) {
  return 'Pag' + val
}

5.方法的调用

<button @click="open">点击变猪</button>
<button v-on:click="open2">这样也可以变</button>
methods: {
    open() {
      this.msg = '猪'
      this.ok = !this.ok
    },
    open2() {
      this.msg = '猪+1'
      this.ok = !this.ok
    }
}

在js中我们使用onClick表示点击方法,vue中则使用@click表示,常用的还有@change,@submit,基本上就是把on变成了@,但是@在vue中等于v-on:,他们的作用是一致的

6.逻辑运算

vue中是支持if、else、for等常用的逻辑操作的

<div v-if="ok">这里也是ok</div>
<div v-else>这里是个啥</div>
<select>
   <option v-for="(item, index) in data">{{ item.id }}</option>
</select>

if-else通常是一组,当然他也支持elseif。

v-for意思是循环一个数组,这里data就是一个数组,一般数组就是[]里面的内容,同时你也可以利用vue双向绑定的机制,随时改变其数组俩面的值,改变后,vue会快速的将他们在页面上渲染出来。

7.属性名称的绑定

<div>
  <a :[attributeName]="url">这是个链接</a>
  <button v-on:[eventName]="open2">也可以绑定事件</button>
</div>


return {
      attributeName: 'href',
      url: 'https://www.baidu.com',
      eventName: 'click'
}

[]中括号的内容很明显在html中是一个标签的属性,在上面这个代码中"attributeName"=href,所以在第一行标签中就相当于html中的

  <a href="https://www.baidu.com">这是个链接</a>

同时他也可以动态绑定事件eventName=“click”。所以他就是一个点击事件,open2是一个方法名称

,所以open2也是个动态绑定的的方法

8.修饰符

修饰符是以点开头的特殊后缀,表明指令需要以一些特殊的方式被绑定。例如 .prevent 修饰符会告知 v-on 指令对触发的事件调用 event.preventDefault()

<form @submit.prevent="handleSubmit">
    <button type="submit">Submit</button>
</form>

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不会写爬虫的程序员B

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

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

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

打赏作者

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

抵扣说明:

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

余额充值