gpt4 book ai didi

javascript - Knockout.js ko.mapping.toJS 在我看来没有刷新数据

转载 作者:数据小太阳 更新时间:2023-10-29 04:54:26 27 4
gpt4 key购买 nike

我从服务器获取一个 json 对象并填充我的 View 。然后我更改数据,将其推送回服务器。然后我获取了一份新的数据副本,希望它会随着任何更改刷新我的 View 。然而这并没有发生。时间差

$(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;
}

这个初始加载工作正常。然后我做一些事情并更改其中一个可观察对象并将该数据推送回服务器。服务器获取更新,然后我重新获取数据,以便刷新 View (我知道我可以一步传回新数据,但我还没有重构代码)。

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);
};
});
}

控制台消息都显示返回的新数据,但我的 View 从未更新。

最佳答案

我认为问题在于您在更新 contract_model 时传递给 ko.mapping.fromJS 函数的参数顺序。

你有:

ko.mapping.fromJS(contract_model,{},data);

你想要:

ko.mapping.fromJS(data, {}, contract_model);

关于javascript - Knockout.js ko.mapping.toJS 在我看来没有刷新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9304666/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com