0

我有以下行:

 $.getJSON('@Url.Action("RegistrationShareClassReport", new { id = ViewBag.Id })', function (data) {
        viewModel.RegistrationShareClassReport(data);
    });

这基本上以 json 格式返回具有不同元素的数据。例如

id = "2",
name = "tj",
country = "GB"

id = "3",
name = "pj",
country = "IT"

我想要的是从该视图模型中为每个项目填充所有国家/地区的数组。所以我需要遍历viewmodel数据并从每个国家中提取国家。

我想知道我可以在 knockout.js 中实现这一点吗?

谢谢

4

1 回答 1

1

您可以使用 Knockout 映射插件 (http://knockoutjs.com/documentation/plugins-mapping.html) 将您的 json 映射到您的视图模型。

这里有一些代码可以帮助您入门。根据自己的需要进行调整:

<script type="text/javascript">
    $.getJSON("/data.json", function (data) {

        var viewModel = {};

        var mapping = {
            "countries": {
                key: function (data) {
                    return ko.utils.unwrapObservable(data.name);
                }
            }
        };

        viewModel = ko.mapping.fromJS(data, mapping);

        ko.applyBindings(viewModel);
    });
</script>

然后在 HTML 中:

<ul data-bind="foreach: $root">
    <li data-bind="text: name"></li>
</ul>
于 2012-06-05T12:13:30.867 回答