vue实现改变内容
Vue 实现动态内容修改
在 Vue 中实现内容动态修改主要通过数据绑定、计算属性、方法触发等方式实现。以下是几种常见场景的实现方法:
数据绑定实现内容更新
通过 v-model 或 {{ }} 插值表达式绑定数据,当数据变化时视图自动更新:
<template>
<div>
<input v-model="message" placeholder="输入内容">
<p>当前内容:{{ message }}</p>
</div>
</template>
<script>
export default {
data() {
return {
message: '初始内容'
}
}
}
</script>
方法触发内容修改
通过方法改变数据属性,触发视图更新:
<template>
<div>
<p>{{ content }}</p>
<button @click="changeContent">修改内容</button>
</div>
</template>
<script>
export default {
data() {
return {
content: '原始文本'
}
},
methods: {
changeContent() {
this.content = '新修改的内容'
}
}
}
</script>
计算属性动态生成内容
当需要基于其他数据动态生成内容时,使用计算属性:
<template>
<div>
<input v-model="firstName" placeholder="名">
<input v-model="lastName" placeholder="姓">
<p>全名:{{ fullName }}</p>
</div>
</template>
<script>
export default {
data() {
return {
firstName: '',
lastName: ''
}
},
computed: {
fullName() {
return `${this.firstName} ${this.lastName}`
}
}
}
</script>
条件渲染动态内容
使用 v-if/v-show 根据条件显示不同内容:
<template>
<div>
<button @click="toggle">切换内容</button>
<p v-if="show">这是显示的内容</p>
<p v-else>这是替代内容</p>
</div>
</template>
<script>
export default {
data() {
return {
show: true
}
},
methods: {
toggle() {
this.show = !this.show
}
}
}
</script>
列表内容动态更新
使用 v-for 渲染列表,并通过数组方法更新内容:
<template>
<div>
<ul>
<li v-for="(item, index) in items" :key="index">
{{ item }}
</li>
</ul>
<button @click="addItem">添加内容</button>
</div>
</template>
<script>
export default {
data() {
return {
items: ['内容1', '内容2']
}
},
methods: {
addItem() {
this.items.push(`新内容${this.items.length + 1}`)
}
}
}
</script>
响应式原理注意事项
Vue 2.x 中直接通过索引修改数组或添加新属性需要使用特殊方法:
- 数组修改:
this.$set(this.items, index, newValue)或使用数组方法如push,splice - 对象属性添加:
this.$set(this.obj, 'newKey', 'value')
Vue 3.x 使用 Proxy 实现响应式,可以直接修改数组索引或添加对象属性。







