Vue的模板语法

2021-01-24  本文已影响0人  我是Msorry

模板template的三种写法

第一种:Vue完整版,写在HTML中

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

第二种:Vue完整版,写在选项里

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

注意:使用这种写法,原div#app会被替换,在页面中找不到id=app的div标签

第三种:Vue非完整版,配合Demo.vue文件

<template></template>中是XML语法

<script></script>中默认导出一个构造选项options,和实例的构造选项的区别是没有template

<style></style> 中写CSS

使用Vue非完整版,只能使用render: h => h(Demo)

//Demo.vue中的代码
<template>
  <div> 
    {{n}} 
    <button @click="add"> +1 </button>
   </div>
</template>
<script>
  export default {
    data(){ return {n:0} },// data 必须为函数
    methods:{add(){ this.n += 1 }} }
</script>
<style>

</style>
//实例文件
import Demo from './Demo.vue'

new Vue({
  render: h => h(Demo)
}).$mount('#app')

模板里的语法

表达式

HTML标签

假设 data.x 的值为 <strong>hello</strong>,想展示HTML标签,而不是文本内容

展示{{n}}

不会对模板进行编译

绑定属性

绑定事件

发现是函数加()调用,否则直接运行代码

这导致一个问题,如果xxx(1)返回一个函数,这个函数不会执行,所以不要这么用!!!

条件判断

<div v-if='x>0'>
  x大于0
<div/>
<div v-else-if='x===0'>
  x等于0
<div/>
<div v-else='x<0'>
  x小于0
<div/>

循环

v-for="(value,key) in Object || Array" :key = 'key'使用v-for必须绑定:key="",这个值是唯一性的值

<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>

显示与隐藏

满足条件展示标签,不满足整个标签不会出现在HTML

总结

1.使用XML语法
2.使用{{}}插入表达式
3.使用v-htmlv-onv-bind等指令操作DOM
4.使用v-ifv-for等指令实现条件判断和循环

上一篇下一篇

猜你喜欢

热点阅读