Попытка загрузить observableArray с JSON от сервера, как это:нагрузки Нокаут не observableArray работает
function InsightViewModel() {
var self = this;
self.Name = ko.observable("");
var insightData = {
Name: self.Name
};
self.insightData = ko.observable();
self.Insights = ko.observableArray([]);
$.ajax({
type: "GET",
url: '@Url.Action("GetIndexData", "Admin")',
contentType: "application/json",
dataType: "json",
data:{},
success: function (data) {
self.Insights(data);
alert(JSON.stringify(data) + "Array length " + self.Insights.length);
},
error: function (error) {
alert(error.status + " " + error.statusText);
}
});
};
var viewModel = new InsightViewModel();
ko.applyBindings(viewModel);
alert(viewModel.Insights.length);
Я могу предупредить вне JSON от сервера, и это справедливо. Но массив пуст.
Я попробовал это, не повезло:
$(data).each(function (element) {
self.Insights.push(element);
});
Не то, что опыт работы с нокаутом. Есть предположения?
'предупреждение (viewModel.Insights.length)', вероятно, работают до вашего '$ .ajax.sucess 'callback invoked. Что делать, если вы попробуете 'ko.dataFor (document.body) .Insights(). Length'? – haim770
Вы ошибочно получаете массив 'Insights' длины, он должен быть' self.Insights(). Length' (с скобками). – alexmac
Вы правы Александр, мой плохой ... – Soeren