Sapui5 以编程方式将UI5控件的CSS类绑定到模型值

Sapui5 以编程方式将UI5控件的CSS类绑定到模型值,sapui5,Sapui5,是否有方法将sap.ui.table.table中ui5输入模板的class属性绑定到模型值 到目前为止,我尝试的是: [ { 标签:“arow”, 残疾人:对,, 类别:“myClass1”, 数据:[ { 值:“rowVal1” } ] }, // ... ] 及 myTable.bindColumns(“/columns”),函数(索引:string,上下文:any){ 让indParts:string[]=index.split(“-”); 设ind=+indParts[indPart

是否有方法将
sap.ui.table.table
中ui5输入模板的class属性绑定到模型值

到目前为止,我尝试的是:

[
{
标签:“arow”,
残疾人:对,,
类别:“myClass1”,
数据:[
{
值:“rowVal1”
}
]
},
// ...
]

myTable.bindColumns(“/columns”),函数(索引:string,上下文:any){
让indParts:string[]=index.split(“-”);
设ind=+indParts[indParts.length-1];
var colLabel=context.getProperty().label;
让模板=新sap.m.Input({
值:`{data/${ind}/value}`,
类:“{=${class}}”,
已启用:{=!${disabled}&!${data/'+ind+'/disabled}},
});
//addStyleClass('{class}');
//setClass('{class}');
let column=new sap.ui.table.column({
标签:colLabel,
宽度:`{width}`,
模板:模板,
});
返回列;
});
myTable.bindRows(“/rows”);

似乎我不能在这里使用模型绑定,只能在创建模板时添加静态类值。是这样吗?

正如注释中所建议的,解决方案之一是使用您自己的属性增强控件的属性集,以允许绑定样式类

以下是一个工作示例:

下面是控件扩展的一个片段:

sap.ui.define([
“sap/m/Input”,
“sap/m/InputRenderer”,
],功能(输入,输入端){
“严格使用”;
返回Input.extend(“demo.control.Input”{
元数据:{
特性:{
“样式类”:{
键入:“字符串”,
defaultValue:null,
bindable:是的,
}
}
},
渲染器:{
apiVersion:2,//允许DOM修补程序aka.“语义呈现”
addOuterStyles:函数(oRenderManager、oInput){
InputRenderer.addOuterStyles.apply(这是参数);
oRenderManager.class(oInput.getStyleClass());
},
},
});
});
如本主题中所述,一些基本控件允许覆盖渲染器中的现有方法。例如,如果查看
InputBaseRenderer.js
,可以看到渲染器提供了多个钩子,这些钩子将被子类覆盖,例如:

/**
*此方法保留给派生类,以便为输入容器添加额外的类。
*
*@param{sap.ui.core.RenderManager}格式化可用于写入渲染输出缓冲区的RenderManager。
*@param{sap.ui.core.Control}oControl应该呈现的控件的对象表示形式。
*/
InputBaseRenderer.addOuterClasses=函数(oRm,oControl){};
由于
styleClass
是ManagedObject的有效属性,因此JS(“以编程方式”)中的绑定也应该起作用:

新输入({//“演示/控制/输入”中需要)
// ...,
styleClass:“{=${class}”
});

不可绑定,因为它甚至不是任何ManagedObject的有效属性。您必须使用附加的控件属性(例如名为
“styleClass”
)扩展输入控件,然后使其bindable@BoghyonHoffmann,谢谢你的解释。我想是因为我在输入元素的xml视图中使用了它,然后才可以在这里使用它。太糟糕了。请告诉我们以下解决方案是否适用于您