我有一个UIComponent,它具有不露面组件的依赖性。
主要组件元数据:
jQuery.sap.declare("MYAPP.Component");
sap.ui.core.UIComponent.extend("MYAPP.Component", {
metadata: {
dependencies: {
libs: [],
components: [
"MYAPP.Component2"
]
}, etc
该应用程序表明它已到达无面组件,因为如果我做了一些故意的语法错误,我会在加载网页时收到错误消息。我还可以从sap.ui.core.Component.extend()代码外部打印出console.log(" test")。
jQuery.sap.declare("Component2.Component");
console.log("outside test"); //this prints
sap.ui.core.Component.extend("Component2.Component", {
metadata: {
},
init: function(){
sap.ui.core.Component.prototype.init.apply(this, arguments);
console.log("component2 init test"); //this doesn't print
}
});
我的资源申报可能存在问题? 一些index.html:
<script id='sap-ui-bootstrap' type='text/javascript'
src='resources/sap-ui-core.js'
data-sap-ui-theme='sap_bluecrystal'
data-sap-ui-libs='sap.m, sap.me'
data-sap-ui-xx-bindingSyntax="complex"
data-sap-ui-xx-supportedLanguages="en"
data-sap-ui-resourceroots='{"MYAPP":"./"}'></script>
<script>
sap.ui.localResources("view");
sap.ui.localResources("utils");
sap.ui.localResources("control");
sap.ui.localResources("Component2");
我的文件夹结构:
MYAPP
/Component2 //faceless component folder
Component.js
/view //views and controllers folder
Component.js //main component
index.html
答案 0 :(得分:0)
我在SCN(here)的用户的帮助下找到的答案是,父组件的元数据将调用一个函数来加载新组件而不实例化它。所以你必须明确地创建组件。
我在父组件的init()函数中添加了一个简单的sap.ui.component。
sap.ui.component({ name: "MYAPP.Component2" });
现在,在父组件之前加载并实例化新组件。希望这篇文章能帮助其他人使用不露面的组件,因为我在研究这个问题时自己发现了很少的文档。