我有一个 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);) 是曾经存在的,并且在获取和显示数据方面“有效”。
下面的代码是我尝试读取数据并将映射应用于它的尝试。它根本不起作用。换句话说,我没有在页面上看到任何数据。
我确定我遗漏了一些明显的东西?