Vue学习:7.计算属性2
上一节了解的是计算属性的默认简写,只能读取,不能修改。
什么意思呢?很简单,我们知道计算属性是依赖数据动态计算一个值,那我可不可以直接this.计算属性 = xxx 来修改计算属性的结果呢?这其实是不行的!因为上一节中我们写的是计算属性的默认简写,只能构读取数据,如果要进行修改,必须写它的完整形式。
Vue 中计算属性的完整写法涉及到定义一个对象,该对象包含 get
和 set
方法,分别用于获取和设置计算属性的值。这种写法允许我们不仅在依赖其他数据时动态计算一个值,还能监听对该计算属性的直接赋值操作,并在值被设置时执行相应的逻辑。
实例:改名卡
实现功能:
依赖Vue实例数据动态显示姓和名,同时根据表单输入更改姓和名。
思路:
使用get()方法动态渲染,然后使用v-model绑定表单输入,同时使用set()方法修改Vue实例数据,最后再次使用get()方法动态渲染。
代码:
html:
<div id="app">
姓:<input v-model="firstName" type="text"> +
名:<input v-model="lastName" type="text"> =
<span>{{ fullName }}</span>
<br>
改名:<input @keyup.enter="changeName()" v-model="newname" style="width: 100px;">
<button @click="changeName()">改名卡</button>
</div>
js:
<script>
const app = new Vue({
el: '#app',
data: {
firstName: '马',
lastName: '超',
newname: ''
},
methods: {
// 该函数不能设置computed的属性
changeName(){
this.fullName = this.newname
}
},
// 计算属性完整写法:get()+set(),获取和修改
// 修改的底层逻辑:首先修改的值被传递给set()的形参
// 然后修改数据,最后再执行一遍get()
computed: {
fullName:{
get(){
return this.firstName + this.lastName
},
//对字符串进行切片处理获得姓和名
set(value){
this.firstName = value.slice(0,1)
this.lastName = value.slice(1)
}
}
}
})
</script>
分类:
Vue2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话