sap.ui.core.Fragment.load возвращает неопределенное значение - PullRequest
0 голосов
/ 27 ноября 2018

В моем приложении есть две плитки FLP.Один может получить доступ к sap.ui.core.Fragment.load, а другой - нет.

  • Рабочий:

enter image description here

  • Не работает:

enter image description here

и byId возвращает ленивая заглушка ?enter image description here

Они оба загружают UI5

<script
  id="sap-ui-bootstrap"
  src="https://sapui5.hana.ondemand.com/resources/sap-ui-core.js"
  data-sap-ui-theme="sap_belize_plus"
  data-sap-ui-libs="sap.m, sap.ushell, sap.collaboration"
  data-sap-ui-preload="async"
  data-sap-ui-compatVersion="edge"
  data-sap-ui-frameOptions='allow'
  data-sap-ui-resourceroots='{
    "monitor": "./",
    "common": "./../../../common"
  }'>
</script>

У неработающего нет Fragment.js в ресурсе SAPUI5, но я могу получить доступ к Fragment-dbg.js

enter image description here

Я также сравнил manifest.json, разницы нет.Есть еще какие-нибудь подсказки?

1 Ответ

0 голосов
/ 27 ноября 2018

Я обнаружил, что после sap.ui.xmlfragment(), Fragment.load() существует.Так что добавьте его к sap.ui.define или .require, тогда оно будет работать.

sap.ui.require([
  "sap/ui/core/Fragment"
], function(Fragment){
  Fragment.load({
    name: "namespace.myFragment",
    controller: this
  }).then(function(oFragment) {
    // ...
  }.bind(this));
}.bind(this));

Благодаря @Boghyon Hoffmann:

фабричные функции внутри пространства имен sap.ui.* имеюттакже был переработан.UI5 теперь предоставляет полностью асинхронные API.Старые API, конечно, все еще доступны по соображениям совместимости, но также не рекомендуются. Модуляризация ядра SAPUI5

Новый API должен использовать модульный способ, что означает использование sap.ui.require / sap.ui.define.


Документация: Замена устаревших заводов

...