如何在Vue.js中解绑定数组副本
How to unbind an array copy in 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>
new Vue({
el: '#app',
data: {
testArray: [],
templateArray: [{name: "TEST"},],
},
ready: function() {
this.testArray = this.templateArray.slice(0);
},
});
问题是,然后我更新新的数组'testArray',我也改变旧的数组'templateArray'。
正在运行的脚本:https://jsfiddle.net/4po1cpkp/7/
是否有办法创建新的数组基于数组模板不直接绑定到模板?
正如Vue.js文档所说:
在底层,Vue.js附加了一个隐藏属性
__ob__
和递归地将对象的可枚举属性转换为getter以及启用依赖项收集的设置。具有以下键的属性以$或_开头的会被跳过。
你可以存储你的名字从下划线开始的模板数组:
data: {
testArray: [],
_templateArray: [{ name: "TEST" }]
},
ready: function() {
this.testArray = this.$data._templateArray;
}
或者你需要它作为Vue.js对象:
this.testArray = JSON.parse(JSON.stringify(this.templateArray));
我使用Vue扩展函数Vue.util.extend来复制Vue 2中的非绑定数组:
this.items_list.push(Vue.util.extend({}, this.list_item));
OPTION 1
你应该通过使用JavaScript concat()函数将数据分配给testArray,将旧数组复制到新数组,就像这样,如果你使用小数组数据,使用这个:
this.testArray = [].concat(this.templateArray);
选项2
你可以使用ES6的扩展运算符来合并多个数组,像这样:
this.testArray = [...[],...this.templateArray]
选项3(用于大数据)
const MAX_BLOCK_SIZE = 65535; // max parameter array size for use in Webkit
export function appendArrayInPlace(dest: [], source: []) {
let offset = 0;
let itemsLeft = source.length;
if (itemsLeft <= MAX_BLOCK_SIZE) {
dest.push.apply(dest, source);
} else {
while (itemsLeft > 0) {
const pushCount = Math.min(MAX_BLOCK_SIZE, itemsLeft);
const subSource = source.slice(offset, offset + pushCount);
dest.push.apply(dest, subSource);
itemsLeft -= pushCount;
offset += pushCount;
}
}
return dest;
}
选项3此处输入链接描述
您可以在MDN中使用数组原型的slice()
。array .prototype.slice()
this.testArray = [].slice.call(this.templateArray)
相关文章:
- 无法通过数组映射绑定
- 使用knockout.js将数组绑定到视图模型
- 将角度材质设计复选框绑定到控制器中的数组
- 我正在尝试使用多个2数组来绑定svg圆的数据,但不知道如何绑定
- 值未与数组对象绑定
- 敲除:可观察数组没有被正确绑定——只有1个结果显示,而api返回6
- AngularJS-将数组值绑定到输入ngModel
- Dojo将索引0处的数据从数组绑定到小部件
- ng-repeat不绑定ng-model对象数组
- D3:使用变量访问绑定数组中的对象
- 如何使用 Knockout.js 绑定数组中的子数组
- 如何通过Angularjs绑定数组进行选择
- 是事件在Jquery中触发的与其事件绑定数相关联的数字
- 如何从共享工厂绑定数组或对象
- ASP中的模型绑定数组.净MVC
- 为什么我不能在AngularJs中双向绑定数组索引到模型?
- 如何在Vue.js中解绑定数组副本
- 在D3中绑定大数组
- KnockoutJS:绑定数组到多行引导网格
- 如何绑定数组到arraystore,以便在extjs中填充组合