问题确实如此。我想在KnockoutJS中将可观察数组复制到另一个数组。克隆/复制knockoutJS中的observablearray的最佳方式是什么?
47
A
回答
57
要复制observableArray你会想这样做:
var viewModel = {
array1: ko.observableArray(["one", "two"]),
array2: ko.observableArray()
};
viewModel.clone = function() {
viewModel.array1(viewModel.array2.slice(0));
};
如果你想只是做一个副本,那么你会怎么做:
viewModel.array1(viewModel.array2());
与第二实施例中的问题是,底层数组是相同的,所以推到ARRAY1或数组2会导致两个具有新的值(因为它们都指向相同的数组)。
1
假设你有这样的:
modelA { someValues: observableArray(); }
modelB { iWantYourValues: observableArray(); }
您应该能够:
modelB.iWantYourValues(modelA.someValues())
42
我面临着相同的任务;克隆一个可观察数组。我可以想出如何做到这一点的唯一方法是将observable转换为JS对象,然后将该对象转换为可观察对象。下面的功能需要KnockoutJS映射插件: http://knockoutjs.com/documentation/plugins-mapping.html
function cloneObservable(observableObject) {
return ko.mapping.fromJS(ko.toJS(observableObject));
}
希望这有助于
0
你问不完全是,但我想添加这个留给后人......
如果你想克隆与原始数据保持同步的观察值(通常在保留原始数据的同时创建一个节流/去抖动克隆),你可以这样做:
const clone = ko.pureComputed(() => original()).extend({ rateLimit: 500 })
相关问题
- 1. 复制/克隆画笔的最佳方法是什么?
- 2. Ext JS - 克隆进出商店的最佳方式是什么?
- 3. 在Jung中克隆图形的最佳方法是什么?
- 4. 克隆observables的最佳方法是什么?
- 5. 什么是在Windows中复制fork()的最佳方式?
- 6. 在克隆git-svn中的主干之后克隆分支的最佳方法是什么?
- 7. 什么是复制/克隆JSON对象结构的最有效方法?
- 8. 什么是复制QT中的两个二进制文件的最佳方式
- 9. 什么是浅克隆的限制
- 10. 在WPF中克隆TabItem的最简单方法是什么?
- 11. 控制器中非克隆方法排序的最佳实践
- 12. 复制和克隆有什么区别?
- 13. 复制版本控制库的最佳方法是什么?
- 14. 在IE6中修复CSS问题的最佳方式是什么?
- 15. 在Django 1.3中合并重复的最佳方式是什么?
- 16. 什么是查询的最佳方式?
- 17. 键入()的最佳方式是什么?
- 18. 什么是开源的最佳方式?
- 19. “投票”的最佳方式是什么?
- 20. 绑定没有克隆方法,什么是复制它的有效方法
- 21. 在PHP中实现控制器的最佳方式是什么?
- 22. 什么是在MFC中制定计划的最佳方式
- 23. 在Electron中,制作ajax请求的最佳方式是什么?
- 24. 在Qt中绘制阴谋的最佳方式是什么?
- 25. 在C#.NET中制作游戏的最佳方式是什么?
- 26. 在joomla中制作web服务的最佳方式是什么?
- 27. 在rails3中制作新闻稿的最佳方式是什么?
- 28. 在git中强制合并的最佳方式是什么?
- 29. 什么是更快的复制或克隆一个FreeBSD分区?
- 30. 克隆Web服务的最简单方法是什么?
是的,我只希望该数组的值复制,而不是一个参考副本,以便第一个选项应该是我的方案最适合,谢谢。 – jaffa
根据我的经验,这似乎是通过引用复制如果您的可观察数组充满可观察的属性,因为观察者本身是对象。切片通过引用复制对象。你知道如何深入克隆淘汰赛阵列吗? – PrinceTyke