You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SAPUI5的控制器中更新项目全局Model?

SAPUI5 控制器更新全局Model问题解答

可行性结论

完全可行。SAPUI5 中挂载在 Component 实例上的全局 Model,设计目的就是为了实现跨视图、跨控制器的全局数据共享,支持在任意控制器中进行读写更新操作。

具体操作方法

  • 首先确认全局Model的注册信息:常规项目的全局Model都会在Component.js的init生命周期方法中注册,未指定名称的为默认全局Model,传入自定义名称的为具名全局Model
  • 控制器中获取全局Model:通过this.getOwnerComponent().getModel()方法获取,获取具名Model时传入对应名称即可,示例:
    // 获取默认全局Model
    const oGlobalModel = this.getOwnerComponent().getModel();
    // 获取名为appInfo的具名全局Model
    const oAppInfoModel = this.getOwnerComponent().getModel("appInfo");
    
  • 执行数据更新:直接调用Model实例的setProperty方法更新对应路径的字段即可,只要开启了默认的双向绑定,所有绑定了该字段路径的视图会自动同步渲染最新值:
    // 更新默认全局Model下 /userInfo/nickName 字段的值
    oGlobalModel.setProperty("/userInfo/nickName", "修改后的昵称");
    

操作注意事项

  • 全局Model的更新会触发所有绑定了对应字段路径的组件重渲染,建议按需更新指定路径字段,不要频繁全量覆盖全局Model数据,避免不必要的性能损耗
  • 若存在多控制器同时修改同一个全局Model字段的场景,可调用oGlobalModel.refresh(true)强制拉取最新数据,避免脏数据问题
  • 仅将需要全局共享的数据存入全局Model,视图私有临时数据请存到对应视图的私有Model中,避免全局Model过于冗余

内容的提问来源于stack exchange,提问作者JK97Tae

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 00:39:01