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);
};
감사합니다. 페이지로드시 결과를 표시하지 않고 새로 고침을 클릭 할 때만 결과를 표시하려면 어떻게해야합니까? 내 페이지에 페이지로드에 대한 결과가 없지만 "검색"결과가로드 될 것입니다.하지만 아약스 호출 결과에서 바인드하면 뷰는 이전에 viewmodel에 대해 알지 못합니다 – user8808262
글쎄, 당신은 내가 한 일을하고 .then() 메소드의 내용을 실행하기 전에 ajax 메소드의 결과를 기다리는 GetBeer(). then()을 사용하십시오. 그렇게하면 데이터가 있음을 알게되고 그 시점 이후에 viewModel을 인스턴스화합니다. 과 같은 HTML 조건문이 필요할 수도 있습니다. 실제로 반환 된 데이터가없는 경우 물건이 터지도록하십시오. – Budhead2004
도움 주셔서 감사합니다. 도움이되었습니다. – user8808262