Grid layoutData不应用于sap.ui.view元素



请看下面的柱塞链接

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

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

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

最新更新