我正在使用Knockout编写一个表单填充页面并基于一些旧的html表单,一切都很好但是html表单有一个按钮可以将一组地址数据从一组输入复制到另一组,我正在尝试使用此函数在我的ViewModel中复制类似的功能:
self.CopyData = function (source, target) {
for (var i = 0; i < source.length; i++) {
self[target[i]] = self[source[i]];
};
};
其中source和target是字符串数组。
但是我认为这会失败,因为我没有写入淘汰观察,而是用一个值覆盖它。但是我还没有找到正确的方法。来自文档:
要为observable写一个新值,请调用observable并传递 新值作为参数。例如,打电话 myViewModel.personName('Mary')会将名称值更改为'Mary'。
如何按名称写入Knockout observable?
答案 0 :(得分:2)
observable只是一个setter-getter函数。您可以通过使用值作为参数调用它来为observable分配值。要读取observable的值,可以不带参数调用它。
为了清楚起见,我将使用几个变量。
self.CopyData = function (source, target) {
var sourceObs, destObs;
for (var i = 0; i < source.length; i++) {
sourceObs = self[source[i]];
destObs = self[target[i]];
destObs(sourceObs());
};
};