Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sapui5 setJSON、setData和loadData之间有什么区别?_Sapui5_Jsonmodel - Fatal编程技术网

Sapui5 setJSON、setData和loadData之间有什么区别?

Sapui5 setJSON、setData和loadData之间有什么区别?,sapui5,jsonmodel,Sapui5,Jsonmodel,这与SAPUI5中提到的sap.ui.model.json.JSONModel方法有关: setJSON setData loadData 这三种方法的区别是什么?我们什么时候使用这些方法?我们可以为同一目的使用其中的一种以上吗?setData 您有一个JavaScript对象,并希望使用此数据作为模型 setJSON 您有一个字符串,在解析时表示一个JavaScript对象,并希望将此数据用作您的模型 加载数据 您希望访问一个以JSON形式返回数据的远程API,并希望使用该数据作为您的

这与SAPUI5中提到的
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

幸运的是,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()
来面对这个问题,我试图提供一个数组,其中包含一个正确的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);