我在我的视图中调用一个弹出窗口(显示带有一些细节的地图),其中包含以下代码,名为EditDialog.fragment.xml
<core:FragmentDefinition
xmlns="sap.m"
xmlns:core="sap.ui.core"
xmlns:app="http://schemas.sap.com/sapui5/extension/sap.ui.core.CustomData/1">
<Dialog
title="Edit Client Location"
class="sapUiPopupWithPadding" >
<VBox fitContainer="true" justifyContent="Center" alignItems="Center">
<HBox id="map_canvas" fitContainer="true" justifyContent="Center" alignItems="Center" />
</VBox>
在我的控制器中,我有以下代码
if (!this.Edit) {
this.Edit = sap.ui.xmlfragment("motherclocker." + Edit
+ "Dialog", this // associate controller with the
// fragment
);
this.getView().addDependent(this.Edit);
}
this.geocoder = new google.maps.Geocoder();
var mapOptions = {
center : new google.maps.LatLng(-34.397,
150.644),
zoom : 15,
mapTypeId : google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(this.Edit.getView().byId(
"map_canvas").getDomRef(), mapOptions);
this.Edit.open();
现在的问题是我收到消息未捕获的TypeError:无法读取未定义的属性'getDomRef'。通常对于谷歌地图,你只需使用this.getView(),它就可以正常使用,因为我在普通视图中使用它。然后我尝试了
map = new google.maps.Map(
this.Edit.getId("map_canvas"), mapOptions)
这会创建地图对象但是在调用对话框时;它没有显示。
任何人都知道解决方案吗?否则我将不得不调用一个新视图。
答案 0 :(得分:1)
您可以使用sap.ui.getCore.byId方法访问对话框,例如:
sap.ui.getCore().byId("map_canvas")
对话框不是通常的视图的一部分,但它们被添加到#34;顶部&#34;。这就是为什么你不能通过视图引用它们。
此致 基莫