vue指令-3

简介: 遍历对象的语法形式和遍历数组是一样的,即value in object,其中object是被迭代的对象,value是被迭代的对象属性的别名

遍历对象

遍历对象的语法形式和遍历数组是一样的,即value in object,其中object是被迭代的对象,value是被迭代的对象属性的别名

演示代码:

<template>
  <div id="app">
    <ul>
      <li v-for="value in book">{{value}}</li>
    </ul>
    <router-view />
  </div>
</template>
<script>
export default {
  name: 'App',
  data() {
    return {
      book: {
        title: 'vue',
        author: 'gk',
        isbn: '6662241'
      }
    }
  }
}
</script>

运行结果:

image.png

如果要获取对象的属性名,可以使用可选的属性名参数作为第二参数

演示代码:

<template>
  <div id="app">
    <ul>
      <li v-for="(value,key) in book">{{key}}:{{value}}</li>
    </ul>
    <router-view />
  </div>
</template>
<script>
export default {
  name: 'App',
  data() {
    return {
      book: {
        title: 'vue',
        author: 'gk',
        isbn: '6662241'
      }
    }
  }
}
</script>

运行结果:

image.png

遍历对象的表达式还可以使用第三个参数作为索引

演示代码:

<template>
  <div id="app">
    <ul>
      <li v-for="(value,key ,index) in book">{{index}}-{{key}}:{{value}}</li>
    </ul>
    <router-view />
  </div>
</template>
<script>
export default {
  name: 'App',
  data() {
    return {
      book: {
        title: 'vue',
        author: 'gk',
        isbn: '6662241'
      }
    }
  }
}
</script>

运行结果:

image.png

对象更新检测

由于JavaScript的限制,vue不能检测对象属性的添加和删除。要解决这个问题,可以使用vue全局的set()和delete()方法来添加和删除属性,或者vue实例的set()和set()和set()delete()方法来添加和删除属性,并触发视图更新。

<template>
  <div id="app">
    <ul>
      <li v-for="(value,key ,index) in book">{{index}}-{{key}}:{{value}}</li>
    </ul>
    <button v-on:click="set()">添加属性</button>
    <button v-on:click="setdelete()">删除属性</button>
    <router-view />
  </div>
</template>
<script>
import Vue from 'vue'
export default {
  name: 'App',
  data() {
    return {
      book: {
        title: 'vue',
        author: 'gk',
        isbn: '6662241'
      }
    }
  },
  methods: {
    set() {
      Vue.set(this.book, 'sgg', '1233')
    },
    setdelete() {
      Vue.delete(this.book, 'isbn')
    }
  }
}
</script>

运行结果:

image.png

key属性

为了个vue一个提示,以便他能跟踪每个节点的身份,从而重用和重新排序现有的元素,需要为列表的每一项提供一个唯一key属性,key属性的类型只能是string和numder类型。

演示代码

<template>
  <div id="app">
    <p>id:<input type="text" v-model="bookid">
      s书名<input type="text" v-model="title">
      <button v-on:click="add()">添加</button>
    </p>
    <p v-for="book in books" v-bind:key="book.id">
      <input type="checkbox">
      <span>id:{{book.id}},书名:{{book.title}}</span>
    </p>
    <router-view />
  </div>
</template>
<script>
export default {
  name: 'App',
  data() {
    return {
      bookid: 'a',
      title: 'a',
      books: [
        {
          id: 1,
          title: 'vue'
        }
      ]
    }
  },
  methods: {
    add() {
      this.books.unshift({ id: this.bookid, title: this.title }), (this.bookid = ''), (this.title = '')
    }
  }
}
</script>

运行结果:

image.png


目录
相关文章
|
2天前
|
JavaScript
vue中watch的用法
vue中watch的用法
|
2天前
|
JavaScript 前端开发
vue动态添加style样式
vue动态添加style样式
|
2天前
|
JavaScript 前端开发
Vue项目使用px2rem
Vue项目使用px2rem
|
1天前
|
JavaScript API
vue学习(13)监视属性
vue学习(13)监视属性
10 2
|
1天前
|
JavaScript
vue 函数化组件
vue 函数化组件
|
1天前
|
JavaScript 前端开发
vue学习(15)watch和computed
vue学习(15)watch和computed
9 1
|
1天前
|
JavaScript
vue学习(14)深度监视
vue学习(14)深度监视
10 0
|
6天前
|
JavaScript
Vue组件传值异步问题--子组件拿到数据较慢
Vue组件传值异步问题--子组件拿到数据较慢
11 0
|
6天前
|
缓存 JavaScript
Vue中的keep-alive是什么意思?以及如何使用
Vue中的keep-alive是什么意思?以及如何使用