如何从控件中获取父 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.
片段没有添加到控件树中。所以你找不到他们。但是,您可以找到它们已添加到的视图。
如何检索 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.
片段没有添加到控件树中。所以你找不到他们。但是,您可以找到它们已添加到的视图。