verileri yenilenmiyor. Sonra verileri değiştiririm, sunucuya geri gönderirim. Daha sonra, görünümümü herhangi bir değişiklikle yenileyeceğini umarak verilerin yeni bir kopyasını alırım. Ancak bu gerçekleşmez. TIAKnockout.js ko.mapping.toJS ben sunucudan bir json nesnesi getir ve benim görünümü doldurmak Bence
$(document).ready(function() {
var customer_id = get_customer_id();
var data = load_model();
contract_model = ko.mapping.fromJS(data,{});
ko.applyBindings(contract_model);
}
function load_model(){
var url = '/ar/contract_json?contract_id='+get_contract_id();
var data = '';
$.ajax({
type:'GET',
url:url,
async:false,
success: function(returningValue){
data = returningValue;
}
});
return data;
}
Bu ilk yükleme iyi çalışıyor. Daha sonra bazı şeyler yaparım ve gözlenebilirlerden birini değiştiririm ve bu verileri sunucuya geri gönderirim. Sunucu güncellemesini alır ve sonra daha da görünüm yenilenir böylece yeni (i tek adımda yeni veri geri geçebilir biliyorum ama bu kodda ben henüz refactored değil) veri getirme yapmak.
function refresh_data(contract_model){
var url = '/ar/contract_json?contract_id='+get_contract_id();
$.post(url,function(data){
console.log(data);
ko.mapping.fromJS(contract_model,{},data);
ko.applyBindings(contract_model);
console.log(ko.mapping.toJS(contract_model))
});
}
function refresh_data(contract_model){
var url = '/ar/contract_json?contract_id='+get_contract_id();
$.post(url,function(data){
console.log(data);
ko.mapping.fromJS(contract_model,{},data);
console.log(ko.mapping.toJS(contract_model))
});
}
function push_model(contract_model,refresh){
var url = '/ar/update_contract';
var data = {'contract':ko.mapping.toJSON(contract_model)}
delete data['lines'];
$.post(url,data,function(return_value){
if (refresh){
refresh_data(contract_model);
};
});
}
Konsol iletilerinin tümü, geri gelen yeni verileri gösterir, ancak görünümüm hiçbir zaman güncellenmez.
Mapping eklentisi için KnockOut belgeleri, IMO, ko.mapping.fromJS (...) çağrısının sözdiziminde yanlıştır. Dokümanlar aşağıdakileri gösterir: ko.mapping.fromJS (data, viewModel), ama açıkça şunu içermelidir: ko.mapping.fromJS (data, {}, viewModel) –
Bunun için harcanan saatler. Teşekkürler bu büyük bir yardım oldu. –
Ayrıca saatlerce çalıştım. Size bir altı paket borçluyum – stackoverfloweth