У меня есть приложение ASP.NET MVC, которое использует WebAPI для данных и KnockOutJS во внешнем интерфейсе. По большей части все работает довольно хорошо, однако я начал понимать, что при обновлении значений эти значения не отражаются в связанных элементах.
Причина в том, что данные передаются с сервера как JSON и преобразуются в простой объект JSON. Другими словами, никакие свойства не отображаются как «наблюдаемые», поэтому, когда я меняю значения объекта, ничего не обновляется.
Я читал о добавленном мной плагине для KnockOutJS под названием «mapping», однако я не могу понять, какой синтаксис нужен для его работы. Я надеюсь, что кто-то еще разобрался с этим и есть несколько предложений. Вот мой текущий код:
<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);) - это то, что раньше было и «работает» в отношении получения и отображения данных.
Код чуть ниже - это моя попытка прочитать данные и применить к ним сопоставление. Это совсем не работает. Другими словами, я не вижу никаких данных на странице.
Я уверен, что упускаю что-то очевидное?