如何从控件获取父视图/片段

时间:2016-10-19 14:23:10

标签: controls viewcontroller sapui5 sap-fiori

如何检索View / Fragment sap.ui.core.Control属于哪个?

BR 克里斯

2 个答案:

答案 0 :(得分:6)

您可以走近父母,直到找到视图。但是,您不应该依赖标识符。使用元数据来标识视图:

  buttonPress: function(oEvent){
    var b = oEvent.getSource();
    while (b && b.getParent) {
      b = b.getParent();
      if (b instanceof sap.ui.core.mvc.View){
        console.log(b.getMetadata()); //you have found the view
        break;
      }
    }
  }

JSBin上的示例。

片段未添加到控制树中。所以你找不到它们。但是,您可以找到已添加的视图。

答案 1 :(得分:3)

如果控件的标识符包含View的标识符(如果您使用的是XML视图,则为“__xmlview42”),您可以将其解压缩并调用:

sap.ui.getCore().byId("__xmlview42")

获取包含视图。如果标识符不存在,您可以使用以下命令在控制树中导航:

control.getParent()

直到您拥有一个控件,其标识符包含View标识符。您还可以浏览控制树,直到到达视图。

对于片段,这不起作用,因为内容将成为父视图的一部分。