代码之家  ›  专栏  ›  技术社区  ›  fadedbee

在Vue组件中参数化v模型

  •  1
  • fadedbee  · 技术社区  · 7 年前

    我编写了一个小组件来抽象一些重复的HTML:

    <template>
      <div class="form-group">
        <label for="desc">{{label}}</label>
        <input id="desc" readonly type="text" class="form-control input-sm"
               v-model={{v_model}}/>
      </div>
    </template>
    
    <script>
    export default {
      name: 'HelloWorld',
      props: {
        label: String,
        v_model: String
      }
    }
    </script>
    
    <style scoped>
    </style>
    

    这就产生了错误:

    Error compiling template: 
    
    <div class="form-group"> 
      <label for="desc">{{label}}</label>
      <input id="desc" readonly type="text" class="form-control input-sm"
             v-model={{v_model}}/> </div>
    - invalid expression: Unexpected token { in 
    
      {{v_model}}/
    
    Raw expression: v-model="{{v_model}}/"
    

    我期待着分配给 v-... 属性需要以其他方式完成,但我还不知道如何完成。

    1 回复  |  直到 7 年前
        1
  •  0
  •   fadedbee    7 年前

    解决方案是:

    <template>
      <div class="form-group">
        <label for="desc">{{label}}</label>
        <input id="desc" type="text" class="form-control input-sm"
               v-bind:value="value"
               v-on:input="$emit('input', $event.target.value)"
        />
      </div>
    </template>
    
    <script>
    export default {
      name: 'FormGroup',
      props: {
        label: String,
        value: String
      },
      data: function() {
        return {
        }
      }
    }
    </script>
    
    <style scoped>
    </style>