1

次の構造の 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>

しかし、それは機能しません - 「キー」行しか生成しません。どうすれば私が望むものを達成できますか? 多分私はこれを基本的に間違っているので、このサーバー側ではなくビューでデータをグループ化する必要がありますか?

4

1 に答える 1

1

2 番目の foreach の構文を修正します。

<!-- "ko foreach: value -->

作業例: http://jsfiddle.net/DRhrQ/

于 2013-09-29T16:47:21.540 に答える