1

我有一个 ASP.NET MVC 应用程序,它使用 WebAPI 获取数据,并在前端使用 KnockOutJS。在大多数情况下,一切都很好,但是我开始意识到在更新值时,这些值并没有反映在绑定的元素中。

这样做的原因是因为数据是从服务器作为 JSON 传递的,并被转换为纯 JSON 对象。换句话说,没有属性被映射为“可观察对象”,因此当我更改对象的值时,没有任何更新。

我读到了一个名为“mapping”的 KnockOutJS 插件,我已经添加了该插件,但是我无法弄清楚使其工作的正确语法。我希望其他人已经处理了这个问题并提出了一些建议。这是我当前的代码:

<script type="text/javascript">
    function BlogViewModel() {
        var self = this;
        self.blogs = ko.observableArray();
        var baseUri = '@ViewBag.ApiUrl';

        //$.getJSON(baseUri, self.blogs);
        $.getJSON(baseUri, {},
                function (data) {
                    ko.mapping.fromJSON(data, self.blogs);
                });
    }

    $(document).ready(function () {
        ko.applyBindings(new BlogViewModel());
    });

    });
</script>

被注释掉的部分 ($.getJSON(baseUri, self.blogs);) 是曾经存在的,并且在获取和显示数据方面“有效”。

下面的代码是我尝试读取数据并将映射应用于它的尝试。它根本不起作用。换句话说,我没有在页面上看到任何数据。

我确定我遗漏了一些明显的东西?

4

1 回答 1

2

将您的 JSON 数据映射到 ko 视图模型,如下所示:

ko.mapping.fromJSON(data, {}, self.blogs);
于 2014-04-11T12:27:41.440 回答