【问题标题】:Edited: assigned object elements cannot be edited in component javascript/vuejs已编辑:无法在组件 javascript/vuejs 中编辑分配的对象元素
【发布时间】:2018-08-08 09:33:35
【问题描述】:

我在方法中使用 Object.assign 函数获得了对象的副本(感谢@Chris 建议),如下所示: (可以是quill-editor 或任何其他文本输入字段)

<template>
  <div>
    <quill-editor
    v-model="itemsCopy[0].text"
    :options="editorOption"
    >
    </quill-editor> 
    {{itemsCopy[0].text}}
    <button @click="copyAndChange()"> </button>
  </div>
</template>


<script>


export default {
    data() {
        return {
            items: [
              {text: 'text1', active: true},
              {text: 'text1', active: true},
              {text: 'text1', active: true}
            ],
            itemsCopy [],
        }
    },
    methods: {
        function copyAndChange() {
          this.itemsCopy = this.items.slice();
          for (var i=0; i<this.itemsCopy.length; i++) {
            var obj = Object.assign({}, this.itemsCopy[i]);
            obj.text = "something";
            this.itemsCopy[i] = obj;  //replace the old obj with the new modified one.
            console.log('text from items: ' + this.items[i].text)
            console.log('text from itemsCopy: ' + this.itemsCopy[i].text)
          }
          return 0
        }
    }
}
</script>

案例 1。我没有运行该功能 - 一切正常

案例 2。我正在运行该函数一次 - 我可以在编辑器中看到“某物”文本,我可以对其进行编辑,但 {{itemsCopy[0].text}} 中的输出没有改变......

运行该函数后 - 我注意到我无法编辑对象的文本字段(以及活动变量)

【问题讨论】:

  • 您是否在控制台中遇到错误?
  • @F.bernal 不,一切正常
  • 你的 vue obj 中有 itemsCopy 吗?
  • 我真的不明白你的意思......
  • 用你的代码查看这个例子..(改编)jsfiddle.net/tng9r8j3/99

标签: javascript vue.js


【解决方案1】:

好吧,你复制了items 并且不要对那个副本做任何事情,据我所见。

【讨论】:

  • 是的,但是如果我尝试配置我的编辑器v-model="items[0].text",它会将编辑后的文本输出到{{items[0].text}},在新对象上它现在正在工作。我不知道为什么..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-26
  • 1970-01-01
  • 2019-12-27
  • 2019-01-14
  • 1970-01-01
  • 2022-08-20
相关资源
最近更新 更多