1
如何在第一次加载页面时初始化viewModel?在ajax搜索结果返回后初始化viewmodel并刷新
Ajax调用的刷新工作并在ajax调用后正确加载数据,但是在第一次加载时页面不知道模型。
var viewModel = {};
$("#searchButton").click(function() {
var tc= $("#tc").val();
var y= $("#y").val();
$.ajax({
url: "Search/?t=" + tc+ "&y=" + y,
type:'GET',
dataType: 'json',
success: function (result) {
viewModel = new TourViewModel(result);
ko.applyBindings(viewModel);
}
});
});
function TourViewModel(data) {
var self = this;
var tourMapping = {};
self.selectedItem = ko.observable("");
self.lastSavedJson = ko.observable("");
self.saveMe = function() {
viewModel.selectedItem(this);
self.lastSavedJson(JSON.stringify(ko.toJS(self.selectedItem), null, 2));
$.ajax({
url: "SaveTour",
data: ko.toJSON({ tour:ko.toJS(self.selectedItem) }),
type: "post",
contentType: "application/json",
success: function (result)
{ alert(result) }
});
}
selectItem = function() {
self.selectedItem(this);
}
ko.mapping.fromJS(data, tourMapping, self);
};
感谢。尽管如何让它在页面加载时不显示任何结果,并且只需点击refreshbeer就可以显示?我的页面在页面加载时不会有任何结果,但点击“搜索”结果将被加载,但是如果我在ajax调用返回中绑定,那么在此之前视图并不知道视图模型 – user8808262
那么,你做我所做的和在执行.then()方法的内容之前使用GetBeer()。then()等待ajax方法的结果。这样你就知道你有数据,并在那之后实例化viewModel。如果数据 - >可能需要html条件,如<! - ko,以确保如果实际上没有返回任何数据,则不会爆炸。 – Budhead2004
谢谢你的帮助。这有帮助。 – user8808262