Вот что я издевался из моего кода MVC:Отображение массива в Knockout
$(function(){
var ViewModel = function(){
this.items = ko.observableArray(null);
this.isLoading = ko.observable(true);
};
var data = [{"CreatedAt":"2013-12-29T22:00:20","Intro":"","Body":"","Title":"Test Item","Url":"/news-items/test-item/"},{"CreatedAt":"2013-12-29T21:13:34","Intro":"","Body":"","Title":"Test 1","Url":"/news-items/test-1/"},{"CreatedAt":"2013-12-29T16:03:56","Intro":"","Body":"<p>In the spirit of Christmas we are holding a Christmas photo competition for all members to enter. Prizes will be given to the best Christmas themed photo and the funniest photo. To enter, simply email your photo to: [email protected] Your entry will be uploaded onto the club's Facebook page where all members can then vote by 'liking' their favourite photo.</p>\n<p>Entries close on the 20th of December and voting will be open until the 5th of January. The winning photo's will be displayed on the website.</p>","Title":"Christmas 2013 Photo Competition","Url":"/news-items/christmas-2013-photo-competition/"}];
var vm = new ViewModel();
ko.applyBindings(vm);
vm.items(test);
vm.isLoading(false);
})
Я дразнил его из моего кода MVC, но data
объект в основном то, что было возвращено из моего контроллера. В этом случае отображение нокаутом не работает, и я подозреваю, что это способ возвращения моих данных. Правильно ли это, или мне нужно обернуть его в DTO сортировки, например: { items: [{item1:'...'},{item2:'...'}]}
?
Спасибо.
EDIT: Моя ошибка, я уже определил items
как observableArray
. Я использую его таким образом, чтобы как только страница загрузила загрузчик gif. Я сделал это так раньше, единственное различие на этот раз - это формат json.
ДОБАВЛЕНО: Вот example
Спасибо, я тоже пробовал это, и он тоже не работает. Кажется, что вывод 'ko.mapping.fromJS (data)' правильный, поэтому я должен упустить что-то фундаментальное здесь. Это мой последний пример: http://jsfiddle.net/u54mn/10/ – codedog
Я обновил свой ответ рабочим jsfiddle. Основная проблема заключалась в одновременном сопоставлении наблюдаемого массива - вам не нужно, потому что fromJS возвращает наблюдаемый массив для вас. –