2016-10-19 2 views

ответ

2

Если идентификатор элемента управления содержит идентификатор View (что-то вроде «__xmlview42», если вы с помощью представлений XML) можно извлечь его и называют:

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

для получения содержащего представления. Если идентификатор нет вы можете перемещаться по дереву управления с помощью:

control.getParent() 

до тех пор, пока есть элемент управления, чей идентификатор содержит идентификатор View. Вы также можете перемещаться по дереву управления, пока не достигнете представления.

Для фрагментов это не будет работать, поскольку содержимое станет частью родительского представления.

+0

hm ... В представлениях все еще может быть Компонент-префикс. К сожалению, элементы управления на фрагментах, похоже, не имеют префикса, ни из фрагмента, ни из-за зависимого представления ... – cschuff

4

Вы можете подойти к родителям, пока не найдете Вид. Однако вы не должны полагаться на идентификаторы. Используйте класса или 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.

Фрагменты не добавляются в дерево управления. Поэтому вы не можете их найти. Однако вы можете найти представление, к которому они добавлены.

+1

Короче говоря: нет элегантного способа ... thx anyways – cschuff

Смежные вопросы