【问题标题】:JSONModel Compare Models with each otherJSONModel 相互比较模型
【发布时间】:2018-02-24 05:46:02
【问题描述】:

如果某些属性发生了变化,我只想保存模型的数据。 因此,我想将原始属性和“更改”属性相互比较。 Sergio 发现了这个提示,但没有样本。 https://archive.sap.com/discussions/thread/3667904

如果有人能帮我找到一个好的解决方案,那就太好了。

谢谢, 德克

【问题讨论】:

  • “我只想保存模型的数据”中的“保存”是什么意思?你想达到或避免什么?
  • 您好 Boghyou,我只想在后端发生变化时向后端发送请求。
  • 您的数据是否真的来自 OData 协议?
  • @boghyon: 不,ajax 调用

标签: sapui5 jsonmodel


【解决方案1】:

在使用 JSONModels 时,使用 getJSON 方法提取每个模型的数据,然后将它们转换为 JS 对象。

var oModelA = this.getView().getModel("modelName");
var oModelB = new sap.ui.model.json.JSONModel({
    a: 2
});
var oModelAData = JSON.parse(oModelA.getJSON());
var oModelBData = JSON.parse(oModelB.getJSON());

然后,使用适合您的任何方式进行比较

How to determine equality for two JavaScript objects?

jQuery object equality

【讨论】:

  • var oModelErstellerOriginalData = JSON.parse(oModelErstellerOriginal.getJSON()); var oModelErstellerData = JSON.parse(oModelErsteller.getJSON());
  • 我的问题仍然是仍然存在对更改后的模型的引用。在 oModelErstellerOriginalData 中,值也确实发生了变化。如何避免对更改后的模型的引用?
  • var oModelErstellerOriginalData = JSON.parse(oModelErstellerOriginal.getJSON()); this.oModelErstellerOriginal = _.clone(oModelErstellerOriginalData);
  • 让它与 Lodash 一起工作(删除了参考)。感谢您的帮助
  • this.oModelErstellerOriginal; var oModelErstellerData = JSON.parse(oModelErsteller.getJSON()); if (_.isEqual(oModelErstellerData, this.oModelErstellerOriginal)){ 为了比较这两个对象,我也使用了 Lodash。
猜你喜欢
  • 1970-01-01
  • 2013-01-24
  • 2015-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-12
  • 2015-08-08
相关资源
最近更新 更多