Javascript 如何在Vue中条件绑定v模型?

Javascript 如何在Vue中条件绑定v模型?,javascript,reactjs,vue.js,Javascript,Reactjs,Vue.js,在JavaScript中,对象可以按如下方式排列可选值: <Child {...(editable && { editable: editableOpts })} /> <template> <textarea v-model="myModel"> </template> computed: { myModel(){ if(this.someValue == "test"){ return

在JavaScript中,对象可以按如下方式排列可选值:

<Child {...(editable && { editable: editableOpts })} />
<template>
  <textarea v-model="myModel">
</template>

computed: {
   myModel(){
      if(this.someValue == "test"){
         return "value1";
      }else{
         return "value2";
      }
   }
}
const有效载荷={
姓名:“约瑟夫”,
…(isMember&&{credential:true})
};
在React中,JSX可以随意传递如下道具:

<Child {...(editable && { editable: editableOpts })} />
<template>
  <textarea v-model="myModel">
</template>

computed: {
   myModel(){
      if(this.someValue == "test"){
         return "value1";
      }else{
         return "value2";
      }
   }
}
如何实现可选绑定
v-model

我之所以要这样做,是因为我想在出错时在该文本区域显示警告


当出现错误时,textarea显示警告并清除输入(v-model的
v

我想这样做会对您有所帮助

<template>
  <textarea v-if="hasError" :value="textValue">
  <textarea v-else v-model="textValue">
</template>

我想这样的事情会对你有好处

<template>
  <textarea v-if="hasError" :value="textValue">
  <textarea v-else v-model="textValue">
</template>

你没试过三元运算符吗

<template>
  <textarea v-model="someValue == 'test' ? 'value1' : 'value2'">
</template>
或者,您可以使用以下计算属性执行此操作:

<Child {...(editable && { editable: editableOpts })} />
<template>
  <textarea v-model="myModel">
</template>

computed: {
   myModel(){
      if(this.someValue == "test"){
         return "value1";
      }else{
         return "value2";
      }
   }
}

计算:{
myModel(){
如果(this.someValue==“测试”){
返回“value1”;
}否则{
返回“value2”;
}
}
}

你没试过三元运算符吗

<template>
  <textarea v-model="someValue == 'test' ? 'value1' : 'value2'">
</template>
或者,您可以使用以下计算属性执行此操作:

<Child {...(editable && { editable: editableOpts })} />
<template>
  <textarea v-model="myModel">
</template>

computed: {
   myModel(){
      if(this.someValue == "test"){
         return "value1";
      }else{
         return "value2";
      }
   }
}

计算:{
myModel(){
如果(this.someValue==“测试”){
返回“value1”;
}否则{
返回“value2”;
}
}
}

您需要使用
v-if
检查第一个条件,如果匹配,则像这样绑定模型

<template>
  <textarea v-if="something" :value="textValue">
  <textarea v-else v-model="textValue"> <!--  bind v-model here -->
</template>
<textarea v-model="textValue == 'test' ? 'ifTrue' : 'ifFalse'">

或者你可以像这样使用三元运算符

<template>
  <textarea v-if="something" :value="textValue">
  <textarea v-else v-model="textValue"> <!--  bind v-model here -->
</template>
<textarea v-model="textValue == 'test' ? 'ifTrue' : 'ifFalse'">

有关更多信息,请参阅此链接


您需要使用
v-if
检查第一个条件,如果匹配,则像这样绑定模型

<template>
  <textarea v-if="something" :value="textValue">
  <textarea v-else v-model="textValue"> <!--  bind v-model here -->
</template>
<textarea v-model="textValue == 'test' ? 'ifTrue' : 'ifFalse'">

或者你可以像这样使用三元运算符

<template>
  <textarea v-if="something" :value="textValue">
  <textarea v-else v-model="textValue"> <!--  bind v-model here -->
</template>
<textarea v-model="textValue == 'test' ? 'ifTrue' : 'ifFalse'">

有关更多信息,请参阅此链接


    • 正确的方法是使用计算变量的get和set属性

      <template>
        <textarea v-model="compVal" />
      </template>
      
      <script>
      export default {
        data () {
          return {
            valueTrue: 'hello',
            valueFalse: 'bye',
            selected: false
          }
        },
        computed: {
          compVal: {
            get () {
              if (this.selected) {
                return this.valueTrue
              } else {
                return this.valueFalse
              }
            },
            set (val) {
              if (this.selected) {
                this.valueTrue = val
              } else {
                this.valueFalse = val
              }
            }
          }
        }
      }
      </script>
      
      
      
      导出默认值{
      数据(){
      返回{
      valueTrue:'你好',
      valueFalse:'再见',
      所选:false
      }
      },
      计算:{
      康瓦尔:{
      得到(){
      如果(选择此选项){
      返回此参数。值为true
      }否则{
      返回此参数。值为false
      }
      },
      设置(val){
      如果(选择此选项){
      this.valueTrue=val
      }否则{
      this.valueFalse=val
      }
      }
      }
      }
      }
      
      正确的方法是使用计算变量的get和set属性

      <template>
        <textarea v-model="compVal" />
      </template>
      
      <script>
      export default {
        data () {
          return {
            valueTrue: 'hello',
            valueFalse: 'bye',
            selected: false
          }
        },
        computed: {
          compVal: {
            get () {
              if (this.selected) {
                return this.valueTrue
              } else {
                return this.valueFalse
              }
            },
            set (val) {
              if (this.selected) {
                this.valueTrue = val
              } else {
                this.valueFalse = val
              }
            }
          }
        }
      }
      </script>
      
      
      
      导出默认值{
      数据(){
      返回{
      valueTrue:'你好',
      valueFalse:'再见',
      所选:false
      }
      },
      计算:{
      康瓦尔:{
      得到(){
      如果(选择此选项){
      返回此参数。值为true
      }否则{
      返回此参数。值为false
      }
      },
      设置(val){
      如果(选择此选项){
      this.valueTrue=val
      }否则{
      this.valueFalse=val
      }
      }
      }
      }
      }
      
      我认为这是唯一的方法~除了在模板内需要一个包装器div。我认为这是唯一的方法~除了在模板内需要一个包装器div。您尝试过v-bind中的条件语法吗?v-model=“{vModelProperty:condition}”我不知道它是否有效,但它可能需要可选绑定v-model。您尝试过v-bind中的条件语法吗?v-model=“{vModelProperty:condition}”我不知道它是否有效,但它可能需要可选的绑定v-model。谢谢,但通过这种方式,它仍然绑定v-model。我想要可选绑定。选项在哪种情况下?谢谢,但这样,它仍然绑定v模型。我想要可选绑定。选项在哪种情况下?谢谢,但这样,它仍然绑定v模型。我想要可选绑定。谢谢,但是这样,它仍然绑定v型。我想要可选的装订。