sap.ui.core.Fragment.load返回未定义

时间:2018-11-27 01:52:14

标签: fragment sapui5

我的应用程序中有两个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>

不工作的人在SAPUI5资源中没有Fragment.js,但是我可以访问Fragment-dbg.js

enter image description here

我也比较了manifest.json,没有区别。还有其他线索吗?

1 个答案:

答案 0 :(得分:3)

我发现在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,但也已弃用。   Modularization of the SAPUI5 Core

新API必须使用模块化方式,即使用sap.ui.require / sap.ui.define


文档:Legacy Factories Replacement