javascript - 如何使用 setVisible() 方法使用 json 模型设置元素的可见属性

标签 javascript sapui5 sap-fiori web-ide

我正在使用 Web IDE 自定义标准 fiori 应用程序,在此应用程序中我有以下要求。

我想添加一个复选框,并且在选择该复选框时,应显示或隐藏现有输入字段之一。 多个屏幕上存在相同的字段。所以,我必须在多个屏幕上添加复选框。但是,当在一个屏幕上选择它时,它也应该反射(reflect)在另一个屏幕上。

这就是我所做的。

在 init 方法中,我编写了下面的 JavaScript 代码来添加复选框。

            if(!this.oOtherDate)
            {
                var that = this;
                this.oOtherDate = new sap.m.CheckBox("cOtherDelDate", {
                    text: "{i18n>OTHER_DELIVERY}",
                    selected: "{path : 'soc_cart>/showRddInput'}", // This carries the checkbox selection to other pages. It is JSON model.
                    select: function(oEvent) {
                        var checked = oEvent.getParameters().selected;
                        oModelList.getData().showRddList = !checked;
                        oModelList.getData().showRddInput = checked;
                    }
                });

        }

在上面的代码中,在复选框的选择事件中,我设置了两个 JSON 属性。一个用于复选框值,另一个用于隐藏一个元素,反之亦然。

到目前为止,一切正常。 但是,现在如何将 JSON 属性值“showRddList”绑定(bind)到元素的可见属性?

我尝试执行以下操作,但出现错误: this.byId("Field1").setVisible("{path : 'soc_cart>/showRddList'}");

setVisible() 方法需要 bool 值,在上面的代码行中,它认为是字符串值。

仅供引用...需要隐藏的元素是在 XML View 上定义的,我们无法扩展或自定义 View 来指定 View 中的绑定(bind)属性。因此,我必须仅从 Controller 进行设置。

是否可以将 Controller 的可见属性设置为现有元素?

谢谢。

最佳答案

您正在寻找的是bindProperty输入方法。

this.byId("Field1").bindProperty("visible", {
    "soc_cart>/showRddList"
});

关于javascript - 如何使用 setVisible() 方法使用 json 模型设置元素的可见属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36633542/

相关文章:

sapui5 - sap.ui.getCore().byId() 不返回任何元素

visual-studio-code - 从 NW ABAP 系统检索 sapui5 BSP

javascript - SVG 向圆环图添加径向渐变

javascript - 这真的是 JAVASCRIPT 中的错误还是我对日期、数据类型做错了什么

javascript - asp.net 回发和 javascript/jquery

javascript - 我们如何使用 OPENUI5/SAPUI5 消费 JSON 数据?

javascript - 如何根据表行数据在表下拉列表中设置过滤器

javascript - 找到行中的数字。 JavaScript

tomcat - 需要从 SAP Fiori 中的其他主机加载 UI5 模块

sapui5 - 如何处理sap.m.Table的itemPress?