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