Я не могу понять, почему мой ko.mapping работает нормально, когда я возвращаю массив (используя привязку foreach), но когда это единственный объект (используя привязку «с», он вообще не работает. Я не получаю какие-либо ошибки, но я не получаю никаких результатов:Knockout.JS mapping to observable vs. observableArray
function EventViewModel() {
var self = this;
self.events = ko.observableArray([]);
self.singleEvent = ko.observable({});
self.getEvents = function() {
self.events.removeAll();
$.ajax("/api/Event/", {
contentType: "application/json",
success: function (allData) {
ko.mapping.fromJS(allData, null, self.events);
}
});
}
self.getSingleEvent = function() {
self.events.removeAll();
$.ajax("/api/Event/?guid=435a666b-7913-417f-a474-dfb33d74c2ec", {
contentType: "application/json",
success: function (allData) {
ko.mapping.fromJS(allData, null, self.singleEvent);
}
});
}
self.getEvents();
self.getSingleEvent();
};
window.vm = new EventViewModel();
ko.applyBindings(vm);
я могу засунуть результат getSingleEvent() в массив и использовать «Еогеасп» снова, как это:
ko.mapping.fromJS([allData], null, self.singleEvent);
и сделать singleEvent наблюдаемым массивом, который работает, но мне кажется, что это мошенник.
JSON из GetEvents() выглядит следующим образом:
[{"EventId":4,"Year":2013,"StartDate":"2013-08-28T00:00:00","EndDate":"2013-09-02T00:00:00","EventGuid":"435a666b-7913-417f-a474-dfb33d74c2ec"},{"EventId":5,"Year":2013,"StartDate":"2013-06-07T00:00:00","EndDate":"2013-06-09T00:00:00","EventGuid":"615014ba-15cd-4371-8d43-04d66eb558a2"}]
и JSON из getSingleEvent() выглядит следующим образом:
{"EventId":4,"Year":2013,"StartDate":"2013-08-28T00:00:00","EndDate":"2013-09-02T00:00:00","EventGuid":"435a666b-7913-417f-a474-dfb33d74c2ec"}
Как выглядят данные JSON, которые возвращаются с вашего api? Это определит результирующий тип объекта Javascript. –
Только что отредактировал исходное сообщение с образцами JSON –