我在跟踪Walktrough时遇到此错误。我看不出代码有什么问题。
HolaPanel.controller.js?eval:28 Uncaught TypeError:oDialog.open不是函数
在f.openDialog(HolaPanel.controller.js?eval:28)
在f.a.fireEvent(EventProvider-dbg.js:228)
在f.a.fireEvent(Element-dbg.js:427)
在f.firePress(ManagedObjectMetadata-dbg.js:428)
在f.d.ontap(eval在evalModuleStr(jquery.sap.global-dbg.js:3425), :820:179)
在f.a._handleEvent(Element-dbg.js:162)
在constructor.U._handleEvent(UIArea-dbg.js:828)
在HTMLBodyElement.dispatch(jquery-dbg.js:4737)
at g(jquery-mobile-custom-dbg.js:1972)
在HTMLBodyElement.q(jquery-mobile-custom-dbg.js:2063)
openDialog @ HolaPanel.controller.js?eval:28
a.fireEvent @ EventProvider-dbg.js:228
a.fireEvent @ Element-dbg.js:427
(匿名)@ ManagedObjectMetadata-dbg.js:428
d.ontap @ Button-dbg.js:269
a._handleEvent @ Element-dbg.js:162
U._handleEvent @ UIArea-dbg.js:828
dispatch @ jquery-dbg.js:4737
g @ jquery-mobile-custom-dbg.js:1972
q @ jquery-mobile-custom-dbg.js:2063
dispatch @ jquery-dbg.js:4737
c3.handle @jquery-dbg.js:4549
触发器@ jquery-dbg.js:7819
(匿名)@ jquery-dbg.js:7903
每个@jquery-dbg.js:365
每个@jquery-dbg.js:137
触发器@ jquery-dbg.js:7902
P @ jquery-mobile-custom-dbg.js:1543
R @ jquery-mobile-custom-dbg.js:1553
dispatch @ jquery-dbg.js:4737
c3.handle @jquery-dbg.js:4549
这是我的代码:
<core:FragmentDefinition
xmlns:core="sap.ui.core"
xmlns:mvc="sap.ui.core.mvc"
xmlns="sap.m">
<Page title="Title">
<content>
<Dialog
id="idDialog"
title="Bienvenido {/recipient/name}">
<Toolbar>
<ToolbarSpacer/>
<Image
busy="false"
busyIndicatorDelay="1000"
visible="true"
src="https://www.kaufmannsf.cl/img/logos/img_kaufmann.png"
mode="Image"
backgroundSize="cover"/>
<ToolbarSpacer/>
</Toolbar>
<beginButton>
<Button
text="{i18n>dialogCloseButtonText}"
press="onCloseDialog"/>
</beginButton>
</Dialog>
</content>
</Page>
</core:FragmentDefinition>
这是包含对话框的视图的控制器:
openDialog : function () {
var oView = this.getView();
var oDialog = oView.byId("idDialog");
// create dialog lazily
if (!oDialog) {
// create dialog via fragment factory
oDialog = sap.ui.xmlfragment(oView.getId(), "opensap.myapp.view.HelloDialog");
oView.addDependent(oDialog);
}
oDialog.open();
},
onCloseDialog : function() {
this.getView().byId("idDialog").close();
}
我也有这个错误:
无法加载资源:服务器响应状态为404(未找到)sap-ui.core.js
我不知道它是否与另一个有关。
答案 0 :(得分:1)
您的片段定义了带对话框的页面,但它只应包含对话框。代码失败,因为页面没有打开功能。请调整您的片段定义,并查看manual。
<core:FragmentDefinition
xmlns:core="sap.ui.core"
xmlns="sap.m">
<Dialog id="idDialog" title="Bienvenido {/recipient/name}">
...
</Dialog>
</core:FragmentDefinition>
答案 1 :(得分:0)
As @matbtt said, <Page>
在尝试打开时杀死了执行。正如他所说,删除片段中的<Page>
。
然后,要访问onCloseDialog
事件处理程序,需要在使用sap.ui.xmlfragment
工厂函数对其进行实例化时将控制器传递给Dialog。
只需添加this
作为第三个参数:
oDialog = sap.ui.xmlfragment(oView.getId(), "sap.ui.demo.walkthrough.view.HelloDialog", this);