2013-10-08 2 views
1

Я создал заголовок для одной страницы SAP UI5, теперь хочу иметь аналогичный заголовок с почти теми же компонентами на другой странице. Таким образом, для повторного использования кода я пытался:Как повторно использовать представления SAPUI5?

  • поместить заголовок в отдельном окне UI5
  • создать этот экземпляр заголовка с варом PageHeader = sap.ui.jsview ("зрением«appHeader». appHeader ");
  • добавить PageHeader как содержимое на страницу в поле customHeader

Но это не сработало, без каких-либо данных ошибок! Итак, можно ли использовать пользовательские компоненты пользовательского интерфейса через представление, и если да, то как это сделать?

ответ

2

Эта проблема, вероятно, связано с несколькими varaints использования sap.ui.jsview:

  • Посмотреть определение
  • Просмотр конкретизации

Calling var pageHeader = sap.ui.jsview("appHeader","view.appHeader") просит рамки искать зрения с именем "view.appHeader" в вашем проекте. Если есть представление с этим именем, оно создаст новый экземпляр и присвоит ему ID "appHeader". Если вы используете один и тот же оператор в нескольких модулях вашего приложения, вы просите фреймворк каждый раз создавать экземпляр представления с тем же идентификатором. Вероятно, это приведет к следующей ошибке: добавление элемента с дубликатом id 'appHeader'. Поэтому при повторном использовании представления избегайте использования параметра ID в вашем экземпляре.

Еще одна вещь, которую вы должны учитывать при повторном использовании представления: поскольку представление имеет функцию с именем getControllerName, которая возвращает имя контроллера, используемого для этого представления, фреймворк создаст новый экземпляр этого контроллера для каждого экземпляра, который вы создаете. Это не плохое поведение, но должно быть известно, чтобы избежать проблем.

На первый взгляд:

Просмотр Определение:

sap.ui.jsview(sId, vView) // (e.g. in pageHeader view file) 

Просмотр Инстанцирование:

sap.ui.jsview(sName) // (e.g. calling/reusing it in several files) 

В вашем случае:

var pageHeader = sap.ui.jsview("view.appHeader") должен это сделать.

Редактировать/Приложение:

Начиная с версии 1.15 UI5 вы можете также использовать фрагменты, как легкая альтернатива для повторного представления. documentation имеет несколько приятных примеров и объясняет преимущества фрагментов и то, как они отличаются от обычных видов.

+0

doc ссылка не работает – DerZyklop

+0

@DerZyklop: Спасибо, исправлено! –

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