我正在使用ODataModel处理主/详细SAPUI5示例。 主列表中的每个选择都将每个ID的绑定路径更新到详细信息视图。我的应用程序的用户应该能够更改每个主列表选择在详细信息页面上显示的信息(也就是更改模型)。
当用户从主列表项目A切换到项目B并且项目A的详细信息已被更改时,我想要发出警报。
因此,我计划使用" hasPendingChanges"方法。 在打电话的时候
this.getView().getBindingContext().getModel()
我意识到这个方法返回相同的模型。 拥有JAVA背景我期望得到当前详细视图的模型。 (模特!不是对象......)
我想知道如果当前详细信息模型已更改,是否有办法检查每个主列表选择。
我发现了this问题,但在这种情况下,这个人正在寻找对象,而在我的情况下,我正在寻找模型,所以我可以返回hasPendingChanges()。
答案 0 :(得分:1)
您必须区分模型和应用程序数据。该模型(在本例中为ODataModel)公开了通过OData服务检索和修改应用程序数据的功能。应用程序数据代表您的实体,由您的服务的实体数据模型定义。
理想情况下,应用程序中的所有视图都共享相同的模型实例,这意味着:
this.getView().getModel()
应该在master中返回相同的实例以及detail控制器中的相同实例。该模型包含主服务器中显示的(部分)实体集以及通过在主列表中选择条目而在详细信息视图中加载的特定实体。如果在详细视图中更改实体,则模型将收集这些更改。
因此,保存到您的应用中的某个地方调用hasPendingChanges
以检查是否已应用更改但尚未发送到OData服务。