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

如何在VueJS中将HTML转换为其他类型?

  •  0
  • zerohedge  · 技术社区  · 6 年前

    我有以下几点 Messages.vue 文件:

    <div class="msg" v-for="(msg, index) in messages" :key="index">
        <p class="msg-index">[{{index}}]</p>
        <p class="msg-subject" v-html="msg.subject"></p>
        <p class="msg-body" v-html="msg.body"></p>
        <input type="submit" @click="deleteMsg(msg.pk)" value="Delete" />
        <input type="submit" @click="EditMsg(msg.pk)" value="Edit" />
    </div>
    <script>
    export default {
      name: "Messages",
      data() {
        return {
          subject: "",
          msgBody: "",
          messages: [],
        };
      },
      mounted() {
        this.fetchMessages();
      },
      ....
    

    我想要 msg-subject msg-body 换成 input HTML元素,因此用户可以编辑并提交它们进行更新。我不确定用VueJS实现这种操作的最佳方式是什么。

    1 回复  |  直到 6 年前
        1
  •  1
  •   HM107    6 年前
    <template>
      <div>
          <div class="msg" v-for="msg in messages" :key="msg.id">
              <p class="msg-index">[{{  msg.id }}]</p>
              <p class="msg-subject" v-text="msg.subject" 
                v-show="!msg.editing"></p>
              <input type="text" name="msg-subject"
                v-model="msg.subject" v-show="!!msg.editing">
              <p class="msg-body" v-text="msg.body" 
                v-show="!msg.editing"></p>
              <input type="text" name="msg-body" v-model="msg.body"
                v-show="!!msg.editing">
              <button @click="deleteMsg(msg.id)"> Delete </button>
              <button @click="editMsg(msg.id)"> Edit </button>
          </div>
      </div>
    </template>
    
    
    
    
    <script>
    ... // your usual component code
    data(){
        return{
            messages:{
                ...
                editing:false,
                    }
            }
        },
    methods: {
        EditMsg(id){
        this.editing = true;
        // you can do a direct axios ajax or fetch to edit the updated value
        },
        deleteMsg(id){
        // you can do a direct axios ajax or fetch to delete value
        }
    
    }
    ... // remaining component code
    </script>
    

    旁注:

    1=> 不建议使用索引作为键,索引有不同的用途,您可以阅读有关使用索引的内容 Index as a key is an anti-pattern here .