如何在Vue.js中取消绑定数组副本

Vai*_*das 8 javascript arrays vue.js

我试图将一个数组复制到另一个数组并使用它像新数组一样,不需要对旧数组进行任何更改:

<div id="app">
    <div class="form-group">
       <label>Test input</label>
       <input v-model="testArray[0].name" type="text" class="form-control" placeholder="Input">
    </div>
    <br>
    <pre>testArray: {{ testArray[0] | json}}</pre>
    <pre>templateArray: {{ templateArray[0] | json  }}</pre>
Run Code Online (Sandbox Code Playgroud)

new Vue({
  el: '#app',
  data: {
      testArray: [],
      templateArray: [{name: "TEST"},], 
  },
  ready: function() {
      this.testArray = this.templateArray.slice(0);
    },
});
Run Code Online (Sandbox Code Playgroud)

问题是我正在更新新数组'testArray'我也改变旧数组'templateArray'.

实施中的脚本:https://jsfiddle.net/4po1cpkp/7/

有没有办法基于数组模板创建新数组而不直接将其绑定到模板?

And*_*yan 14

正如Vue.js文档所说:

在引擎盖下,Vue.js附加一个隐藏属性,__ob__递归地将对象的可枚举属性转换为getter和setter,以启用依赖项收集.将跳过以$或_开头的键的属性.

您可以存储名称从下划线开始的模板数组:

  data: {
      testArray: [],
      _templateArray: [{ name: "TEST" }]
  },
  ready: function() {
      this.testArray = this.$data._templateArray;
  }
Run Code Online (Sandbox Code Playgroud)

或者你需要它作为Vue.js对象:

this.testArray = JSON.parse(JSON.stringify(this.templateArray));
Run Code Online (Sandbox Code Playgroud)

对于大数据,第二种情况可能会很慢.