我尝试为sap ui5做google maps api example,以下是我的xml视图:
<html:input id="pac_input" class="controls" type="text"
placeholder="Enter a location" />
<html:div id="type_selector" class="controls">
<html:input type="radio" name="type" id="changetype-all" checked="checked" />
<html:label for="changetype_all">All</html:label>
<html:input type="radio" name="type" id="changetype_establishment" />
<html:label for="changetype_establishment">Establishments</html:label>
<html:input type="radio" name="type" id="changetype_address" />
<html:label for="changetype_address">Addresses</html:label>
<html:input type="radio" name="type" id="changetype_geocode" />
<html:label for="changetype_geocode">Geocodes</html:label>
</html:div>
<html:div id="map-canvas" class="myMap"></html:div>
我想得到&#34; pac_input&#34;输入和&#34; type_selector&#34;在controller.js中以div为单位。但每当我尝试this.getView()。byId(&#34; map_canvas&#34;)时,它会说 this.getView不是函数 我想这是因为这个是一个Window对象而且我不知道如何获取元素。我会很乐意帮忙。在这里我的controller.js:
onAfterRendering: function() {
if (!this.initialized) {
google.maps.event.addDomListener(window, 'load', function(){
this.initialized = true;
util.Common.geocoder = new google.maps.Geocoder();
util.Common.infowindow = new google.maps.InfoWindow();
var mapOptions = {
center: new google.maps.LatLng(-34.397, 150.644),
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
util.Common.googlemap = new google.maps.Map(this.getView().byId("map_canvas").getDomRef(),
mapOptions);
var input = this.getView().byId("pac_input");
var types = this.getView().byId("type_selector");
...
更新1:我还尝试通过sap.ui.getCore.byId()访问,但仍未定义。
答案 0 :(得分:0)
首先我在<html:div id="map-canvas" class="myMap"></html:div>.
犯了一个错误.id应该是map_canvas。我将div元素嵌入到公共位置的变量中并在onInit()处覆盖它。现在它有效。
onInit : function () {
...
util.Common.map_canvas_div = this.getView().byId("map_canvas");
...
}
onAfterRendering: function() {
var input = util.Common.pac_input_input;
...
}