如何将SAPUI5表格从ODataModel绑定切换为JSONModel绑定?
切换表格绑定从ODataModel到JSONModel(无需重建表格)
完全不用重新创建表格!这事儿比你想的简单多了,只需要调整表格的绑定配置,就能无缝切换到JSONModel,下面是具体的操作步骤和实用提示:
核心思路
既然你已经有了和原OData数据结构一致的JSONModel,复用现有表格模板+修改绑定源就能搞定,不用从头构建表格。
具体步骤
确保JSONModel数据结构匹配
你已经通过服务请求拿到数据并调用setData存入JSONModel了,只要这个JSON的数据字段和OData返回的完全一致(比如OData里是ProductID,JSON里也叫ProductID),原来的列绑定模板就能直接复用,不需要修改任何列的定义。重新绑定表格到JSONModel
先获取表格实例,然后调用bindItems方法替换绑定源:// 1. 获取表格控件实例 const oTable = this.getView().byId("yourTableId"); // 2. 复用原有的列模板,重新绑定到JSONModel oTable.bindItems({ path: "/", // JSONModel中数据的根路径,如果数据存在子节点就写对应路径,比如"/Products" model: "localJsonModel", // 如果你给JSONModel起了别名,这里填写别名;默认模型可省略 template: oTable.getBindingInfo("items").template // 关键!直接用原来的列模板 });- 如果你把JSONModel设为了视图的默认模型,那
model参数可以不用写,直接用路径就行。 - 如果之前的ODataModel是默认模型,建议给JSONModel起个明确的别名(比如
local),避免混淆。
- 如果你把JSONModel设为了视图的默认模型,那
刷新绑定生效
绑定修改后,调用刷新方法让表格重新渲染数据:oTable.getBinding("items").refresh();后续切换回ODataModel(可选)
如果之后需要切回后端绑定,用同样的方法重新绑定到ODataModel即可:oTable.bindItems({ path: "/Products", // OData服务的实体集路径 model: "odataModel", // 你的ODataModel别名,默认模型可省略 template: oTable.getBindingInfo("items").template });
实用提示
- 如果你需要在JSONModel里修改数据,直接调用
oJsonModel.setProperty("/path/to/field", newValue),表格会自动更新,而且不会触发后端请求——这正是你要的效果。 - 如果JSON数据结构和OData略有差异,只需要调整列的绑定路径(比如把
{odataField}改成{jsonField}),不用重建整个表格。
内容的提问来源于stack exchange,提问作者C. Ubkcah
相关产品推荐
相关产品推荐

