試圖從服務器加載使用JSON的observableArray這樣的:負載淘汰賽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之前'可能運行調用回調函數。如果您嘗試'ko.dataFor(document.body).Insights()。length',會怎麼樣? – haim770
您錯誤地獲得長度'Insights'數組,它應該是'self.Insights()。length'(帶括號)。 – alexmac
你是對的亞歷山大,我的壞... – Soeren