首页 > 其他分享 >在v-model中无法使用表达式的解决方法

在v-model中无法使用表达式的解决方法

时间:2024-03-11 16:12:20浏览次数:16  
标签:firstName val lastName names 无法 model 表达式 属性

当我们想要使用复杂一点逻辑来决定具体使用哪个属性时,就会遇到v-model本身只支持简单的数据属性,并不支持表达式。

有两种方法可以满足:

1、使用计算属性+getter\setter

<div id="demo">
        姓:<input type="text" placeholder="firstName" v-model="firstName"><br>
        名:<input type="text" placeholder="lastName" v-model="lastName"><br>
        姓名1(单向):<input type="text" placeholder="FullName1" v-model="fullName1"><br>
        姓名2(双向):<input type="text" placeholder="FullName2" v-model="fullName2"><br>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    const demo = new Vue({
        el : '#demo',
        data : {
            firstName : 'A',
            lastName : 'B',
            fullName2 : 'A B'
        },
        computed : {//计算属性相当于data里的属性
            //什么时候执行:初始化显示/ 相关的data属性发生变化
            fullName1(){//计算属性中的get方法,方法的返回值就是属性值
                return this.firstName + ' ' + this.lastName
            },
 
            fullName2 : {
                get(){//回调函数 当需要读取当前属性值是执行,根据相关数据计算并返回当前属性的值
                    return this.firstName + ' ' + this.lastName
                },
                set(val){//监视当前属性值的变化,当属性值发生变化时执行,更新相关的属性数据
                    //val就是fullName3的最新属性值
                    console.log(val)
                    const names = val.split(' ');
                    console.log(names)
                    this.firstName = names[0];
                    this.lastName = names[1];
                }
            }
        }
 
    })
 
 
</script>

2、v-model是个语法糖,使用其原本的方式

语法糖

<input v-model="message">

原本

<input :value="message" @input="message = $event.target.value">

这里的message就可以使用一个动态的属性名。

标签:firstName,val,lastName,names,无法,model,表达式,属性
From: https://www.cnblogs.com/caihongmin/p/18066380

相关文章

  • C语言判断表达式的写法3<keyDown && keyDown<14
    if(3<keyDown&&keyDown<14){//Yourcodehere}可以写成if(3<keyDown<14){//Yourcodehere}吗答案:不能,因为在C语言中,if(3<keyDown&&keyDown<14) 和 if(3<keyDown<14) 是不同的。在C语言中,3<keyDown......
  • 解决问题:HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相
      缺少AspNetCoreModuleV2模块,下载安装即可。ps:.netframework是可以直接发布,IIS指定就能正常访问的。但aspnetcore项目略有不同,要额外安装一个模块,如果没有安装,会报HTTP错误500.19-InternalServerError的错。1、官方版本地址:https://dotnet.microsoft.com/down......
  • Vue — v-model详解
    一、v-model原理原理:v-model本质上是一个语法糖。例如在inpu中,就是value属性和input事件的合写作用:提供数据的双向绑定双向绑定:数据变,视图跟着变;视图变,数据跟着变二、表单类组件封装&v-model简化代码1.表单组件封装的核心思路:(1)父传子:数据从父组件使用prop传递给子组件渲染......
  • 解决github无法push问题
    1、先测试可用性[email protected]如果提示如下说明可用2、如果不行,则编辑~/.ssh/config文件,如果没有config文件的话就直接vim~/.ssh/config加入以下内容Hostgithub.comHostnamessh.github.comPort443Usergit3、再次测试,提示如下就说明......
  • aliyun 无法密码登录
    情况 诊断  解决方案一:systemctlstatus 参考:https://help.aliyun.com/zh/ecs/user-guide/linux-system-can-not-connect-with-ssh-remote-instances-of-ecs systemctlstatussshd.service SSH服务未启动有很多原因,例如sshd进程未设置开机自启动、sshd关键目录......
  • Denoising Diffusion Probabilistic Models去噪扩散模型(DDPM)
    DenoisingDiffusionProbabilisticModels去噪扩散模型(DDPM)2024/2/28论文链接:DenoisingDiffusionProbabilisticModels(neurips.cc)这篇文章对DDPM写个大概,公式推导会放在以后的文章里。一、引言Introduction各类深度生成模型在多种数据模态上展示了高质量的样本。生成......
  • 规则七:避免css表达式
    当页面动态变化时,对于各种事件,例如改变大小,滚动和鼠标移动。这些都会发送请求进行求值,这样就导致了求值进行的非常繁琐。如何避免:使用一次性表达式:将值设置成为固定值,去除css表达式使用事件处理器:这样可以避免在无关事件发生时对表达式的求值。  ......
  • [蓝桥杯 2019 省 B] 后缀表达式
    这题没想到怎么贪心,看题解恍然大明白#include<iostream>#include<stdio.h>#include<algorithm>#include<string>#defineFor(i,j,n)for(inti=j;i<=n;++i)usingnamespacestd;typedeflonglongLL;constintN=2e5+5;LLans;in......
  • java8特性-lambda表达式
    Lambda表达式的使用1.举例:(o1,o2)->Integer.compare(o1,o2);格式:->:lambda操作符或箭头操作符->左边:lambda形参列表(其实就是接口中的抽象方法的形参列表)->右边:labbda体(其实就是重写抽象方法中的方法体)3.lambda表达式的使用:(分为六种情况)方式一:无参,无返回值......
  • Modelsim仿真软件与Notepad++关联
    Step1:在Modelsim下方的控制窗口(Transcript)输入代码,并敲回车procexternal_editor{filenamelinenumber}{exec"????/notepad++.exe"$filename}//????代表notepad++的安装路径,请大家按照自己电脑上的路径进行编辑.//注意:路径中的斜杠为“/”,也可以写成“\\”.//注意:若报错多检......