请看下面的柱塞链接
问题是当使用视图作为模板时
var productTemplate = new sap.ui.view({
viewName: "view.Product",
type: sap.ui.core.mvc.ViewType.JS,
layoutData: new sap.ui.layout.GridData({
span: "L1 M3 S6"
})
});
未应用layoutData属性对象。产品将使用Grid默认的"L3 M6 S12"逻辑显示。
当使用其他元素如Label, HTML时,此错误不会发生。
var productTemplate = new sap.ui.commons.Label({
text: "{name}",
layoutData: new sap.ui.layout.GridData({
span: "L1 M3 S6"
})
});
请查看Main.view.js并更改文件以测试它。我做错了什么?
谢谢!
您是对的,layoutData没有应用于视图。这是因为该属性不是sap.ui.view()函数的有效参数。只支持以下命令:
- id {String}
- viewName {String} 控制器
- {sap.ui.core.mvc。控制器}
- {sap.ui.core.mvc。ViewType}
layoutData
属性来自sap.ui.core.Element,它位于视图的继承链中,但sap.ui.view函数根本不考虑它。但是,您可以在初始化后附加它:
var productTemplate = new sap.ui.view({
viewName: "view.Product",
type: sap.ui.core.mvc.ViewType.JS
}).setLayoutData(new sap.ui.layout.GridData({
span: "L1 M3 S6"
}));
但是,我不建议在单独的视图中创建用于数据绑定的模板,因为这伴随着视图的整个生命周期。一个更好的方法是您的第二个例子,您立即创建标签。