如何在sap ui5 xml视图中获取html元素的值

时间:2015-07-02 07:15:14

标签: google-maps xhtml sapui5

我尝试为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()访问,但仍未定义。

1 个答案:

答案 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;
    ...
}