SAPUI5中Input值变更时sap.ui.model.json.JSONModel未同步更新问题咨询
根因说明
这是sap.m.Input控件的默认绑定触发逻辑导致的:默认情况下value属性的双向绑定仅在按下回车键、输入框失去焦点时才会将输入值同步到关联模型,不会实时响应输入内容变化。
实现实时同步的方法
你只需要在value属性的绑定声明中添加valueUpdate参数,指定更新触发时机为liveChange即可,无需额外写事件监听逻辑。
另外注意你提供的代码存在笔误:sao.ui.model.BindingMode.TwoWay 应为sap.ui.model.BindingMode.TwoWay,拼写错误会导致绑定模式设置失效。
修正后的完整代码
var oModel = new sap.ui.model.json.JSONModel(); // 修正拼写错误 oModel.setDefaultBindingMode(sap.ui.model.BindingMode.TwoWay); oModel.setData({ test_value: "Hallo" }); var oInput = new sap.m.Input({ // 增加绑定参数指定实时更新 value: "{path: 'test_value', parameters: {valueUpdate: 'liveChange'}}" }); oInput.setModel(oModel);
补充说明
如果有特殊场景需要自定义处理逻辑,也可以通过监听liveChange事件手动更新模型,示例如下:
var oInput = new sap.m.Input({ value: "{test_value}", liveChange: function(oEvent) { oModel.setProperty("/test_value", oEvent.getParameter("value")); } });
这种方式灵活度更高,但优先推荐绑定参数的方案,更符合SAPUI5的声明式开发规范,代码冗余度更低。
内容的提问来源于stack exchange,提问作者UnitedBlaze
相关产品推荐
相关产品推荐

