‘v-model‘ directives require the attribute value which is valid as LHS

⚠️ 问题来源:

当设置v-model的值为一个条件值或计算值时,比如

v-model="test.result == 1 ? 'sucess' : 'error'"

或者

v-model="test.a + '-' + test.b"

就会有题目相关的提示


📖  中文翻译:
        “v-model”指令要求属性值必须与LHS一样有效


❓  原因:
        v-model将始终把Vue实例的data视为数据真实的来源,你应该在组件的JavaScript里的data中声明初始值,这意味着你不能要求v-model一次观察多个变量。


⭐️  建议:

        v-model的值必须是一个数据变量,而不是一个条件值或计算值。如果你需要用条件值或计算值,那么建议不要使用v-model,而是手动传递props并侦听change事件。


🦀️  解决方法:

<template>
    <el-select v-model="test.result"
               @change="onChange">
    </el-select>
</template>

<script>
methods: {
  onChange (value) {
  //在这里你可以log出value来查看它的值是什么
  //console.log(value)
    if (value == 1) {
      this.test.result = 'sucess'
    }else{
      this.test.result = 'error'
    }
  }
}
</script>

🌲  参考回答(需要梯子): 

​​​​​​'v-model' directives require the attribute value which is valid as LHS - vue-core - Vue Forum


🦕   写给自己:
In the future, maybe you can check it in the source code of vue.
Looking forward to your performance.
That must will be awsome!  🎉🎉


        

  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: "v-model"指令要求属性值作为有效的lhs。 这句话的意思是,当使用"v-model"指令时,属性值必须是一个有效的左值(lhs),也就是能够被赋值的值。如果属性值不是有效的左值,那么指令将无法正常工作。 ### 回答2: “v-model”指令是Vue.js框架中非常常用的指令,主要用于在input、textarea、select等表单元素上实现双向数据绑定。当在一个表单元素上使用v-model指令时,需要给该元素设定一个属性值,而这个属性值需要是有效的左值(lhs)。 所谓有效的左值,指的是一个可以被赋值的表达式或变量。在赋值语句中,左值通常位于等号左侧,表示要将右侧的值赋给左侧。例如,下面的语句中,x就是一个有效的左值: x = 10; 在v-model指令中使用的属性值也需要遵循这个规则。例如,在一个input元素上使用v-model指令,绑定的属性值为“message”,那么这个属性值就需要是一个可以被赋值的变量或表达式: <input v-model="message"/> 在上面的例子中,如果将v-model指令的属性值设为一个非法的左值,例如一段字符串或一个数字,就会报错。这是因为Vue.js需要通过属性值来实现双向数据绑定,如果属性值不是合法的左值,就无法完成数据的更新。 因此,在使用v-model指令时,需要注意给它绑定一个合法的左值。一般来说,我们会使用一个在Vue实例中定义的变量作为v-model的属性值,以便能够在模板中进行数据的双向绑定。同时,也可以借助Vue.js提供的计算属性等高级特性,实现更为灵活的数据绑定。 ### 回答3: v-model指令在绑定数据时需要使用有效的左值属性。这是因为v-modelVue.js提供的一种双向数据绑定方式,它将表单控件的值与Vue实例中的数据绑定在一起,能够实现数据的双向同步。而要实现双向数据绑定,既需要在表单控件中获取用户输入的值来更新Vue实例中的数据,也需要将Vue实例中的数据同步到表单控件中来显示给用户。 因此,在使用v-model指令时,必须确保指定的属性值为一个有效的左值属性,能够接收并更新Vue实例中的数据。如果指定的属性值无法实现双向数据绑定的需求,v-model指令就无法正常工作,可能导致数据不同步或无法更新等问题。 在Vue.js中,通常可以将v-model指令用于input、textarea、select等表单控件上,同时还可以通过组件的props属性来传递数据,实现类似双向数据绑定的效果。例如,可以定义一个FormInput组件,在组件内部使用v-model指令绑定input控件中的值,并通过props属性来接收外部传递的数据,最终实现数据的双向同步。 总之,v-model指令是Vue.js中实现双向数据绑定的重要方式之一,但在使用时需要注意指定有效的左值属性,以确保数据能够正确同步和更新。同时,针对不同的数据绑定需求,也可以结合组件的props属性来实现更为灵活的数据传递和绑定。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值