2015-10-20 57 views
1

我正在使用Knockout編寫一個表單填充頁面,並基於一些舊的HTML表單,一切都很好,但是HTML表單有一個按鈕來將一組地址數據從一組輸入複製到另一個,我試圖使用此功能在我的ViewModel中複製類似的功能:如何通過名稱寫入observable?

self.CopyData = function (source, target) { 
    for (var i = 0; i < source.length; i++) { 
     self[target[i]] = self[source[i]]; 
    }; 
}; 

其中源和目標是字符串數組。

但是我認爲這會失敗,因爲我沒有寫信給knockout observable,而是用一個值覆蓋它。但是我還沒有發現如何以正確的方式做到這一點。從文檔:

要編寫一個新值觀察的,叫觀察到,並通過 新值作爲參數。例如,調用 myViewModel.personName('Mary')將名稱值更改爲'Mary'。

如何通過名稱寫入Knockout observable?

+0

'自[目標[I](自[來源[I]);' –

+0

看起來真我錯了,就會真的管用嗎? –

+0

它會如果你添加我忘記的括號:'self [target [i]](self [source] []]());' –

回答

2

可觀察性只是一個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()); 
    }; 
};