Omi*_*nus 6 javascript knockout-mapping-plugin knockout.js
我从服务器获取一个json对象并填充我的视图.然后我更改数据,将其推回服务器.然后我获取数据的新副本,希望它会刷新我的视图并进行任何更改.然而,这不会发生.TIA
$(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;
}
Run Code Online (Sandbox Code Playgroud)
这个初始加载工作正常.然后我做了一些事情并更改了一个observable并将数据推送回服务器.服务器获取更新,然后我重新获取数据,以便视图将刷新(我知道我可以一步传回新数据,但这在代码中我还没有重构).
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);
};
});
}
Run Code Online (Sandbox Code Playgroud)
控制台消息都显示新数据返回但我的视图永远不会更新.
set*_*ler 21
我相信问题在于ko.mapping.fromJS您在更新时传递给函数的参数顺序contract_model.
你有:
ko.mapping.fromJS(contract_model,{},data);
Run Code Online (Sandbox Code Playgroud)
你要:
ko.mapping.fromJS(data, {}, contract_model);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7595 次 |
| 最近记录: |