我有panels包含一些组件(表格,表格等)
我将子组件的visible
属性与我的模型绑定。
有时,面板中的所有组件都不可见。
在这些情况下,我想让面板看不见。 我该怎么办?
这是我的面板代码:
<Panel expandable="true" expanded="true">
<content>
<f:SimpleForm>
<Label text="MyLabel" />
<Input visible="false" /> //set by a model binding, or by a function...or in other mode
</f:SimpleForm>
</content>
</Panel>
如果我在visible
聚合中控制Control的每个content
属性,我就没有正确的结果,因为即使面板为空,SimpleForm
也有{{1}属性设置为 true (默认)
答案 0 :(得分:1)
我会使用表达式绑定使用Panel的所有内容绑定可见属性来设置Panel的visible
属性:
<Panel visible="{= ${tableVisible} || ${/formVisible} || ${someOtherControlVisible} }">
<content>
<Table visible="{tableVisible}">...</Table>
<Form visible="{formVisible}">...</Form >
<Input visible="{someOtherControlVisible}">...</Input>
</content>
</Panel>
但是,如果您的内容动态更改,我宁愿设置/删除内容,并检查Panel的内容聚合长度:隐藏长度0,否则可见
答案 1 :(得分:0)
然后还控制表单的可见性?
<Panel
visible="{= ${labelVisible} || ${/inputVisible} }"
expandable="true"
expanded="true">
<content>
<f:SimpleForm visible="{= ${labelVisible} || ${/inputVisible} }">
<Label text="MyLabel" visible="{/labelVisible}"/>
<Input visible = "{/inputVisible}"/>
</f:SimpleForm>
</content>
</Panel>
答案 2 :(得分:0)
我找到了解决方案:
emptySimpleForm: function (a) {
var bVisible = false;
var aFormElements = this.mAggregations.form.mAggregations.formContainers[0].mAggregations.formElements;
_.forEach(aFormElements, function (oEl) {
_.forEach(oEl.mAggregations.fields, function(oFld){
if (oFld.getProperty('visible') === true)
bVisible = true;
})
})
return bVisible;
},
emptyPanel: function (a) {
var bVisible = false;
var aContent = this.mAggregations.content;
_.forEach(aContent, function (oEl) {
if (oEl.getProperty('visible') === true)
bVisible = true;
})
return bVisible;
},
添加对格式化程序函数的引用:
<Panel visible="{path: 'model>/', formatter: 'ui5bp.Formatter.emptyPanel'}" />
<f:SimpleForm visible="{path: 'model>/', formatter: 'ui5bp.Formatter.emptySimpleForm'}" />
现在我想在xml中插入表达式绑定和我的格式化程序函数
像这样的东西
visible="{= ${myPropOnModel} && ui5bp.Formatter.emptyPanel }"