Template中的语法

Template中和HTML类似,有以下要求

  • 一个.vue文件中的template部分有一个根节点,可以是div,也可以是其它任意标签
  • 标签闭合不是必需的,但推荐使用

显示model里的变量

直接用两个大括号括起来的方式写即可。

<span>{{message}}</span>

不对变量encode,里面的html直接显示,需要把要显示的值赋给属性v-html,这个元素里面的内容会被替换成v-html的值。

<span v-html="htmlMessage"></span>

标签的属性

如果某个html标签的属性需要跟随model里的值变化而变,则需要下面第2、3行的写法

<img src="/img/user.jpg" />
<img v-bind:src="userphoto" />
<img :src="userphoto" />

上面几行代码,第一行的图src是写死的显示/img/user.jpg;后面两行是src和model中的变量userphoto绑定,跟随userphoto的值变化而改变。v-bind可以用第三行的方式简写省略掉。

列表/循环

<template>
  <ul>
    <li v-for="(item, index) in list" v-bind:key="item.id">
        {{index + 1}} : {{item.name}}
    </li>
  </ul>
</template>

<script>
export default {
  data() {
    return {
      list: [{id:111, name:'Tom'}, {id:112: name:'Jack'}]
    }
  },

如果没有唯一的key,可以不写v-bind:key属性。如果不需要序号,可以省略掉index,例如:

<li v-for="item in list">{{item.name}}</li>

条件渲染

v-if

<template>
  <div>
    <button v-on:click="seeme = !seeme">切换显示</button>
    <div class="panel" v-if="seeme">{{seeme}}</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      seeme: true
    }
  }
}
</script>

v-show

v-show只是改变元素的style中的display属性,不论v-show的值为真或假,带有v-show的元素始终会被渲染并保留在DOM中。

<div v-show="var">
   Hello, world.
</div>

事件

<a href="javascript:;" v-on:click="crateNewOne()">新增</a>
<a href="javascript:;" v-on:click="crateNewOneWithParams('blank', 123, varInData)">新增</a>

事件调用的方法需要写在script部分的methods内。

<script>
export default {
  data() {
    return {
    }
  },
  methods: {
    //事件调用的方法写这里
    createnewOne: function(){
    },
    crateNewOneWithParams: function(p1, p2, p3){
    }
  }
}
</script>

results matching ""

    No results matching ""