我有一个ASP.NET MVC应用程序,它使用WebAPI作为数据,并在前端使用KnockOutJS。在大多数情况下,事情工作得很好,但是我开始意识到在更新值时,这些值不会反映在绑定元素中。
原因是因为数据是作为JSON从服务器传递的,并且是在普通的JSON对象中转换的。换句话说,没有属性被映射为“observables”,因此当我更改对象的值时,不会更新任何内容。
我读到了一个名为“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);)就是那里的,并且在获取和显示数据方面“有效”。
下面的代码是我尝试读取数据并将映射应用于它。它根本不起作用。换句话说,我没有在页面上看到任何数据。
我确定我错过了一些明显的东西?
答案 0 :(得分:2)
将您的JSON数据映射到ko viewmodel,如下所示:
ko.mapping.fromJSON(data, {}, self.blogs);