Vue 模板 template

作者: fanison | 来源:发表于2020-05-19 22:13 被阅读0次

模板 template

一、 Vue完整版,写在HTML里

<div id="xxx">
  {{n}}
  <button @click="add">+1</button>
</div>
new Vue({
  el:'#xxx',
  data: {n:0},
  methods: {add(){}}
})

二、 Vue完整版,写在选项里

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

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

<template>
  <div>
    {{n}}
    <button @click="add">+1</button>
  </div>
</template>
<script>
   export default {
     data(){return {n:0}},
     methods:{add(){ this.n +=1 }}
   } 
</script>
<style></style>

// 然后在另外一个地方写如下代码:
import Xxx from './xxx.vue'
new Vue({
  render: h => h(Xxx)
}).$mount('#app')

template语法

展示内容

  • 表达式
{{ object.a }} 表达式
{{ n + 1 }} 运算
{{ fn(n)}} 调用函数
值为 undefined 或 null 就不显示
另一种写法为 <div v-text="表达式"></div>
  • HTML

假设 data.x 值为 <strong> hi </strong>
<div v-html="x"></div> 即可显示粗体的hi

  • 展示{{n}}

<div v-pre>{{ n }}</div>

绑定属性

  • 绑定src
    <img v-bind:src="x" />
  • v-bind: 简写
    <img :src="x" />
  • 绑定对象
    <div :style="{border:'1px solid red',height:100}"></div>

此处 100px 可以写成 100

绑定属性

  • v-on: 事件名
<button v-on:click="add">+1</button>
// 点击之后,Vue会运行 add()
<button v-on:click="xxx(1)">xxx</button>
// 点击之后,Vue会运行 xxx(1)
<button v-on:click="n += 1">xxx</button>
// 点击之后,Vue会运行 n+=1
  • 缩写
<button @click="add">+1</button>
<button @click="xxx(1)">xxx</button>
<button @click="n += 1">xxx</button>

条件判断

  • if...else
<div v-if="x>0">
  x 大于 0
</div>
<div v-else-if="x === 0">
  x 为 0
</div>
<div v-else> x 小于 0</div>

循环

  • for(value,key) in 对象或数组
<ul>
  <li v-for="(u,index) in users" :key="index">
    索引:{{index}} 值:{{u.name}}
  </li>
</ul>
<ul>
  <li v-for="(value,name) in obj" :key="name">
    属性名:{{name}},属性值:{{value}}
  </li>
</ul>

显示、隐藏

  • v-show
<div v-show="n%2 === 0">n 是偶数</div>
  • 近似等于
<div :style="{display:n%2===0?'block':'none'}">n 是偶数</div>

相关文章