【问题标题】:Unable to add template text to v-textarea with Vue and Vuetify无法使用 Vue 和 Vuetify 将模板文本添加到 v-textarea
【发布时间】:2019-05-10 14:08:54
【问题描述】:

我继承了一个用 Vue/Vuetify 编写的现有应用程序,它有一个我正在尝试修改的现有 v-textarea 元素。问题是我们现在想要使用用户可以根据需要编辑的示例文本预填充此元素。我已尝试将 valueplaceholder 属性添加到 v-textarea 元素,但没有让示例文本显示在 v-textarea 中。

这是包含麻烦的 v-textarea 的对话框:

    <v-dialog v-model="dialogAddComment" 
      hide-overlay 
      persistent 
      max-width="600px">
      <v-toolbar card color="blue-grey lighten-4" dense elevation="16"> 
        <v-toolbar-title color='black' class="body-2 ml-3">Add Comment</v-toolbar-title>         
        <v-spacer></v-spacer>
        <v-icon @click.stop="closeDialogAddComment">close</v-icon>
      </v-toolbar>
      <v-form ref="form" v-model="valid" lazy-validation>
        <v-card>
          <v-flex>
            <v-layout column>
              <v-flex xs12 sm6 d-flex mx-3>
                <v-select
                  :items="engagement.allIncidentTypes"
                  item-text="incidentCategoryText"  
                  item-value="incidentCategoryKey"              
                  label="Category"
                  :rules="[v => !!v || 'Category is required']"
                  required
                  v-model="incident.incidentCategoryKey"
                ></v-select>
              </v-flex>
              <v-flex xs12 sm6 d-flex mx-3>
                <v-select
                  :items="zeroTo8"
                  label="Impact (Hours)"
                  :rules="[v => (v === 0 || v <9) || 'Impact is required']"
                  required
                  v-model="incident.numberOfHours"
                ></v-select>
              </v-flex>
              <v-flex xs12 sm6 d-flex mx-3>
                <v-textarea
                  name="input-7-1"
                  label="Comment"
                  :rules="[v => !!v || 'Comment is required']"
                  required
                  v-model="incident.incidentFreeText"
                  counter=1024
                  maxLength=1024
                  rows=3
                  value='U Good lockers\nV Damaged lockers\nW Lockers replaced\nX (=U+V+W) Lockers installed\nY Lockers returned to warehouse'
                ></v-textarea>
                  <!-- -->
            </v-flex>
            </v-layout>          
          </v-flex>                  
          <v-card-actions>
            <v-spacer/>
            <v-btn :disabled="!valid" color="primary" small @click="addIncident">Submit</v-btn>    
            <v-spacer/>         
          </v-card-actions>       
        </v-card>
      </v-form>
    </v-dialog>

我尝试设置placeholdervalue 属性,但什么也没看到。我最初尝试设置 text 属性,但后来在 vuetify.js 网站上找到了 documentation。他们甚至有一个simple example,这正是我想做的。但是我的实现不起作用。我被难住了!

【问题讨论】:

    标签: vue.js vuetify.js


    【解决方案1】:

    您不应同时设置v-modelvalue

    一种可能的解决方案是删除 v-model 并在 @input 事件中更新 incident.incidentFreeText

    <v-textarea
      name="input-7-1"
      label="Comment"
      :rules="[v => !!v || 'Comment is required']"
      required
      counter=1024
      maxLength=1024
      rows=3
      value='U Good lockers\nV Damaged lockers\nW Lockers replaced\nX (=U+V+W) Lockers installed\nY Lockers returned to warehouse'
      @input="onInput"
    >
    </v-textarea>
    
    methods: {
      onInput(value) {
        this.incident.incidentFreeText = value
      }
    }
    

    另一种可能的解决方案是保留v-model,去掉value,但是你需要设置

    this.incident.incidentFreeText='U Good lockers\nV Damaged lockers\nW Lockers replaced\nX (=U+V+W) Lockers installed\nY Lockers returned to warehouse'
    

    在你的代码中。

    【讨论】:

    • 谢谢,我会尝试这两个选项
    • 你让我走上了正轨......我最终将v-on:change="onChange" 添加到我的Vue 元素中,然后添加了一个设置this.incident.incidentFreeTextonChange 方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多