ノックアウトを利用して編集可能なテーブルを作成しようとしています。見出しとテーブル データの両方のコレクションを持つ JSON オブジェクトがあります。このテーブルは、任意のオブジェクトを使用して構築する必要があります。JSON オブジェクトをループして ko.observableArray を作成し、ko.observables を作成してデータを取り込みます。私はそれをすることができました。私の問題は、ko.observables がデータ バインドされていないことです。
これが私のJavaScriptのスニペットです:
EditableTableVM.prototype.load = function() {
this.headings = this.buildKO_ObservableArray(new Heading(), this.dataRepo.HEADINGS);
this.listings = this.buildKO_ObservableArray(new Listing(), this.dataRepo.LISTINGS);
}
/*
* Dynamically creates a ko.observableArray from a JS array
* Params: JSClass - new instance of a class
* Params: baseArray - array of objects to create the observable array
* Returns: Observable arary of JS object with ko.observables
*/
EditableTableVM.prototype.buildKO_ObservableArray = function(JSClass, baseArray) {
var newArray = ko.observableArray([]);
for(var i = 0, j = baseArray.length; i < j; i++) {
var baseObj = baseArray[i];
//new class is the class with ko.observables properties
var newClass = this.buildKO_Observable(JSClass, baseObj);
newArray.push(newClass);
}
return newArray;
}
/*
* Dynamically create ko.observable from properties in an object
* Params: JSClass - new instance of a class
* Params: jsObject - object to created observables with
* Returns: JS object with ko.observables
*/
EditableTableVM.prototype.buildKO_Observable = function(JSClass, jsObj) {
for (var key in jsObj) {
if (jsObj.hasOwnProperty(key)) {
JSClass[key] = ko.observable(jsObj[key]);
}
}
return JSClass;
}
ここに私の Fiddle http://jsfiddle.net/breck421/YFNLX/があり、以前に説明したポイントまで動作しています。
私がやろうとしていることが可能かどうかはわかりませんが、これについて別の目を向けていただければ幸いです。
ありがとう、
ヨルダン