Как я могу получить View
/Fragment
a sap.ui.core.Control
принадлежит?Как получить родительский вид/фрагмент из элемента управления
BR Chris
Как я могу получить View
/Fragment
a sap.ui.core.Control
принадлежит?Как получить родительский вид/фрагмент из элемента управления
BR Chris
Если идентификатор элемента управления содержит идентификатор View (что-то вроде «__xmlview42», если вы с помощью представлений XML) можно извлечь его и называют:
sap.ui.getCore().byId("__xmlview42")
для получения содержащего представления. Если идентификатор нет вы можете перемещаться по дереву управления с помощью:
control.getParent()
до тех пор, пока есть элемент управления, чей идентификатор содержит идентификатор View. Вы также можете перемещаться по дереву управления, пока не достигнете представления.
Для фрагментов это не будет работать, поскольку содержимое станет частью родительского представления.
Вы можете подойти к родителям, пока не найдете Вид. Однако вы не должны полагаться на идентификаторы. Используйте класса или Metadata идентифицировать вид:
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.
Фрагменты не добавляются в дерево управления. Поэтому вы не можете их найти. Однако вы можете найти представление, к которому они добавлены.
Короче говоря: нет элегантного способа ... thx anyways – cschuff
hm ... В представлениях все еще может быть Компонент-префикс. К сожалению, элементы управления на фрагментах, похоже, не имеют префикса, ни из фрагмента, ни из-за зависимого представления ... – cschuff