如何从控件中获取父 View/Fragment

How to get parent View/Fragment from a Control

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

BR 克里斯

如果您的控件的标识符包含视图的标识符(如果您使用 XML 视图,则类似于“__xmlview42”)您可以提取它并调用:

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

获取包含视图。如果标识符不存在,您可以使用以下方式浏览控件树:

control.getParent()

直到您拥有一个标识符包含视图标识符的控件。您还可以在控件树中导航,直到到达视图。

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

您可以沿着 parents 走上去,直到找到景观。但是,您不应该依赖标识符。使用 Class 元数据 来标识视图:

  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.

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