Sapui5 setJSON、setData和loadData之间有什么区别?
这与SAPUI5中提到的Sapui5 setJSON、setData和loadData之间有什么区别?,sapui5,jsonmodel,Sapui5,Jsonmodel,这与SAPUI5中提到的sap.ui.model.json.JSONModel方法有关: setJSON setData loadData 这三种方法的区别是什么?我们什么时候使用这些方法?我们可以为同一目的使用其中的一种以上吗?setData 您有一个JavaScript对象,并希望使用此数据作为模型 setJSON 您有一个字符串,在解析时表示一个JavaScript对象,并希望将此数据用作您的模型 加载数据 您希望访问一个以JSON形式返回数据的远程API,并希望使用该数据作为您的
sap.ui.model.json.JSONModel
方法有关:
setJSON
setData
loadData
这三种方法的区别是什么?我们什么时候使用这些方法?我们可以为同一目的使用其中的一种以上吗?setData 您有一个JavaScript对象,并希望使用此数据作为模型
setJSON 您有一个字符串,在解析时表示一个JavaScript对象,并希望将此数据用作您的模型
加载数据 您希望访问一个以JSON形式返回数据的远程API,并希望使用该数据作为您的模型
设置数据 您有一个JavaScript对象,并希望使用此数据作为模型
setJSON 您有一个字符串,在解析时表示一个JavaScript对象,并希望将此数据用作您的模型
加载数据 您希望访问一个以JSON形式返回数据的远程API,并希望使用该数据作为您的模型
请查看
JSONModel
的详细文档
总结(来自SAP文档):
setData
:设置作为JS对象树传递给模型的数据
e、 g
var数据={
“产品集合”:[{
“titleId”:0,
“名称”:“奥莱因卡O”,
“ProductId”:“001”,
“chartValue”:75,
“ProductPicUrl”:“sap-icon://competitor"
}]
};
var oModel=new sap.ui.model.json.JSONModel(数据);
//或
var oModel=new sap.ui.model.json.JSONModel();
oModel.setData(数据);
/*setdata也可以是json格式的odata url*/
请查看JSONModel
的详细文档
总结(来自SAP文档):
setData
:设置作为JS对象树传递给模型的数据
e、 g
var数据={
“产品集合”:[{
“titleId”:0,
“名称”:“奥莱因卡O”,
“ProductId”:“001”,
“chartValue”:75,
“ProductPicUrl”:“sap-icon://competitor"
}]
};
var oModel=new sap.ui.model.json.JSONModel(数据);
//或
var oModel=new sap.ui.model.json.JSONModel();
oModel.setData(数据);
/*setdata也可以是json格式的ODataURL*/
,幸运的是,UI5的源代码可读性很强,并且通常是比大多数API描述更好的文档。以下是每个API的基本功能:
setJSON
“解析JSON文本并调用setData
”
JSONModel.prototype.setJSON=function(sJSON,bMerge){
var Ojson数据;
试一试{
oJSONData=jQuery.parseJSON(sJSON);
此.setData(oJSONData,bMerge);
}捕获(e){
// ...
}
};
设置数据
“存储数据并通知所有相关绑定(checkUpdate
)”
JSONModel.prototype.setData=function(oData/*普通JS对象*/,bMerge){
if(bMerge){
this.oData=/*与现有数据合并*;
}否则{
this.oData=oData;
} // ...
this.checkUpdate();//通知依赖绑定
};
加载数据
“从给定的远程URL加载数据并调用setData
”-->请检查
简言之,它们都会在某个时刻调用
setData
。
在哪种情况下调用哪种API取决于数据的可用格式
- 数据以JSON文本-->
setJSON
- 数据在其他地方-->
loadData
- 我已经在JS对象/数组中有了数据-->
setData
setData
”
JSONModel.prototype.setJSON=function(sJSON,bMerge){
var Ojson数据;
试一试{
oJSONData=jQuery.parseJSON(sJSON);
此.setData(oJSONData,bMerge);
}捕获(e){
// ...
}
};
设置数据
“存储数据并通知所有相关绑定(checkUpdate
)”
JSONModel.prototype.setData=function(oData/*普通JS对象*/,bMerge){
if(bMerge){
this.oData=/*与现有数据合并*;
}否则{
this.oData=oData;
} // ...
this.checkUpdate();//通知依赖绑定
};
加载数据
“从给定的远程URL加载数据并调用setData
”-->请检查
简言之,它们都会在某个时刻调用
setData
。
在哪种情况下调用哪种API取决于数据的可用格式
- 数据以JSON文本-->
setJSON
- 数据在其他地方-->
loadData
- 我已经在JS对象/数组中有了数据-->
setData
setData()
来面对这个问题,我试图提供一个数组,其中包含一个正确的JS对象,当我调用它时,应用程序挂起。同时,loadData()
工作得很好。我猜不出问题的原因是什么。有趣的你能用JSBin或Plunker等创建一个?我可以看看。也许这是你的建议的一个错误,我试试看。需要注意的是,我使用的是一个过时的UI5-1.44.40版本,该版本的setData()
存在一些问题。我使用setData()
来面对这个问题,我尝试在数组中提供一个适当的JS对象,当我调用它时,应用程序挂起。同时,loadData()
工作得很好。我猜不出问题的原因是什么。有趣的你能帮我吗
const oJSONData = {
data: {
id: 4,
first_name: "Eve",
last_name: "Holt",
avatar: "https://s3.amazonaws.com/uifaces/faces/twitter/marcoramires/128.jpg"
}
};
oJSONModel.setData(oData);
const sJSONData = '{"data":{"id":4,"first_name":"Eve","last_name":"Holt","avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/marcoramires/128.jpg"}}';
oJSONModel.setJSON(sJSONData);
const sURL = "https://reqres.in/api/users/4";
oJSONModel.loadData(sURL);