网格布局数据不适用于 sap.ui.view 个元素

Grid layoutData is not applied for sap.ui.view elements

请看下面的plunker link

问题是当使用视图作为模板时

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"
      })
    });

未应用布局数据 属性 对象。产品将使用网格默认值 "L3 M6 S12" 逻辑显示。

当使用标签等其他元素时,HTML不会出现此错误。

var productTemplate = new sap.ui.commons.Label({
      text: "{name}",
      layoutData: new sap.ui.layout.GridData({
        span: "L1 M3 S6"
      })
    });

请查看Main.view.js并更改文件进行测试。 我做错了什么?

谢谢!

你是对的,布局数据没有应用到视图。发生这种情况是因为 属性 不是 sap.ui.view() 函数的有效参数。仅支持以下内容:

  • id {String}
  • viewName {String}
  • 控制器 {sap.ui.core.mvc.Controller}
  • 类型 {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"
}));

但是,我不建议在单独的视图中创建用于数据绑定的模板,因为这伴随着视图的整个生命周期。更好的方法是你的第二个例子,你立即创建标签。