次の構造の C# Web Api コントローラーにデータがあります。
Dictionary<string, List<Project>> projects ....
ディクショナリのキーは月名だけです。プロジェクトは月ごとにグループ化されます。
私のノックアウトViewModel:
function ProjectsViewModel(data) {
var self = this;
self.projects = ko.observableArray([]);
for (field in data) {
if (data.hasOwnProperty(field)) {
self.projects.push(new DictionaryItem(field, data[field]));
}
}
}
function DictionaryItem(key, value) {
this.key = ko.observable(key);
this.value = ko.observableArray(value);
}
var viewModel;
$(function() {
var baseUri = '@ViewBag.ApiUrl';
$.getJSON(baseUri, function(data) {
viewModel = new ProjectsViewModel(data);
ko.applyBindings(viewModel);
});
});
次の形式の 1 つのテーブルを使用して、このデータをノックアウトで表示したいと考えています。
[key]
[project row]
[project row]
[key]
[project row]
[project row]
...
ノックアウトを使用して、次のマークアップでこれを実行しようとしています:
<table>
<tbody data-bind="foreach: projects">
<tr>
<td data-bind="text: key"></td>
</tr>
<!-- ko:foreach: value -->
<tr>
<td data-bind="text: Name"></td>
</tr>
<!-- /ko -->
</tbody>
</table>
しかし、それは機能しません - 「キー」行しか生成しません。どうすれば私が望むものを達成できますか? 多分私はこれを基本的に間違っているので、このサーバー側ではなくビューでデータをグループ化する必要がありますか?