【问题标题】:How to reset controls to their initial values in SAPUI5?如何在 SAPUI5 中将控件重置为其初始值?
【发布时间】:2018-09-21 08:49:41
【问题描述】:

我有一个使用 OpenUI5 的带有很多控件(ComboBoxesTextAreasRadioButtons)的表单。我在 C++ 中给出了服务器端控件的值。我想要的是有一个重置按钮,它将清除用户的选择并将控件恢复为默认选择。到目前为止,我能够将表单和控件作为 JS 对象,如下所示:

this.byId("MainForm").getModel();

到目前为止,我唯一能做的就是彻底清除所有控件,如下所示:

this.byId("MainForm").getModel().setData(null);

例如,我有一个ComboBox,我的模型中的默认值是第二个选择。如何保留此值并将其设置回控件?

【问题讨论】:

  • 在检索模型时,您可以在第二个模型中复制初始状态设置 copyModel onReset

标签: javascript sapui5


【解决方案1】:

使用相应控件的APIsap.m.ComboBox 具有 setSelectedKey(sKey) 方法。 sap.m.TextArea 具有 setValue(sValue) 方法。 sap.m.RadioButton 具有 setSelected(bSelected) 方法。

press 事件绑定到您的重置按钮。在您的新闻发布会上获取表单的控件。然后使用各自的方法将表单的控件重置为初始状态。

<!-- in your e.g. xml view -->
<Button type="Reject" text="Reset" press="onPressResetButton"></Button>

// in your js controller
onPressResetButton: function() {
  ...
  var oComboBox = this.byId("your-combo-box-id");
  oComboBox.setSelectedKey("your-initial-item-key");
  ...
}

从后端获取表单控件的初始值,或将它们保存在前端的本地模型中。

【讨论】:

    【解决方案2】:

    我认为实现这一目标的最佳方法是拥有两个模型。一个是从服务器获取数据的 odata 模型,第二个是具有本地 json 模型。

    1. 从 odata 获取数据并将其分配给本地模型。
    2. 将本地模型绑定到表单
    3. 用户更改表单上的数据并不重要。本地模型将受到影响。
    4. 当用户按下重置按钮时。再次将您的 odata 模型数据分配给本地模型,这样默认值将再次绑定。

    希望这种方法有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多