KnockOut.js で foreach ループを動作させるのに問題があり、コードでエラーをスローしようとしてもスローされません。テーブルにまったくバインドしようとしていないかのようです。
var History = function (data) {
this.Average = ko.observable(data.Average);
this.Count = ko.observable(data.Count);
};
var DataSource = function (data) {
var convertData = function (array) {
return $.map(data.Data, function (option) {
return new History;
});
};
this.Data = ko.observableArray(this.convertData());
return {
'Data': this.Data
};
};
var dataMappingOptions = {
create: function (options) {
return new DataSource(options);
}
};
var dataModel = function () {
this.source = ko.mapping.fromJS({ 'Data': [], 'Percentage': 0 });
};
currentViewModel = new dataModel();
ko.applyBindings(currentViewModel);
他のすべてが機能するため、これの複雑さの多くを取り除きました。基本的に、私は Knockout.Mappings を使用して AJAX 応答をこれらのオブジェクトにマップし、計算フィールド用の関数を追加しています。これは、私が行うことすべてを無視しているように見える HTML です。表示されますが、何もバインドされません。
<table>
<thead>
<tr>
<th>Average</th>
<th>Frequency</th>
</tr>
</thead>
<tbody data-bind="foreach: kjhkjh">
<tr>
<td data-bind="text: $data.Average()"></td>
<td data-bind="value: $data.Average"></td>
<td data-bind="text: $data.Average"></td>
<td data-bind="value: $data.Average()"></td>
<td>Test</td>
</tr>
</tbody>
</table>
オブジェクトがバインドされていないためkjhkjh
、エラーがスローされると思いますが、そうではありません。入れてsource.Data
も何もしません。静的テーブルのみを表示し、何もバインドしません。
更新: Javascript で何かから値を取得するには、次のようなものを使用する必要があります。
console.log(currentViewModel.source.Data()[11].Average());