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


目录
相关文章
|
17天前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
19天前
|
JavaScript 前端开发 开发者
vue 数据驱动视图
总之,Vue 数据驱动视图是一种先进的理念和技术,它为前端开发带来了巨大的便利和优势。通过理解和应用这一特性,开发者能够构建出更加动态、高效、用户体验良好的前端应用。在不断发展的前端领域中,数据驱动视图将继续发挥重要作用,推动着应用界面的不断创新和进化。
|
20天前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
23 1
vue学习第一章
|
20天前
|
JavaScript 前端开发 索引
vue学习第三章
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中的v-bind指令,包括基本使用、动态绑定class及style等,希望能为你的前端学习之路提供帮助。持续关注,更多精彩内容即将呈现!🎉🎉🎉
22 1
vue学习第三章
|
20天前
|
缓存 JavaScript 前端开发
vue学习第四章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中计算属性的基本与复杂使用、setter/getter、与methods的对比及与侦听器的总结。如果你觉得有用,请关注我,将持续更新更多优质内容!🎉🎉🎉
35 1
vue学习第四章
|
17天前
|
JavaScript 前端开发 开发者
Vue是如何劫持响应式对象的
Vue是如何劫持响应式对象的
19 1
|
17天前
|
JavaScript 前端开发 API
介绍一下Vue中的响应式原理
介绍一下Vue中的响应式原理
26 1
|
20天前
|
JavaScript 前端开发
vue学习第五章
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。自学前端2年半,正向全栈进发。如果你从我的文章中受益,欢迎关注,我将持续分享更多优质内容。你的支持是我最大的动力!🎉🎉🎉
24 1
|
17天前
|
JavaScript 前端开发 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
17天前
|
存储 JavaScript 前端开发
介绍一下Vue的核心功能
介绍一下Vue的核心功能