1

オブザーバブルを動的に作成しようとしていますが、うまく機能していません。これが私が持っているものです:

//このタイプは機能します

   this.Name = ko.observable(data.Name);
   this.Age = ko.observable(data.Age);

//これが私が働きたいことです

   for (var propertyName in data) {
         this.propertyName = ko.observable(propertyName);
     }

これにより、プロパティ名、つまり「Name」と「Age」だけが生成されますが、「Name」が「John」のようにデバッグすると、最初のプロパティ名が値と名前を生成します。

4

1 に答える 1

5

どうですか:

for (var propertyName in data) {
    this[propertyName] = ko.observable(data[propertyName]);
}

this.propertyNameは、実際には「propertyName」という名前のプロパティを設定します。角かっこを使用すると、変数を使用してプロパティを定義できます。

ko.observable(propertyName); プロパティ名を値としてオブザーバブルを定義していました。

必要に応じて監視可能な配列を作成できるように、値が配列であるかどうかを確認することもできます。

for (var propertyName in data) {
    var value = data[propertyName];
    if ($.isArray(value)) { // assuming your using jQuery
        this[propertyName] = ko.observableArray(value);
    } else {
        this[propertyName] = ko.observable(value);
    }
}
于 2013-03-01T13:53:25.313 に答える