SAP WebIDE未捕获ReferenceError:未定义oView

时间:2018-10-04 12:48:21

标签: sapui5

我正在尝试在SAP WebIDE中使用地理位置科尔多瓦插件。 Cordova插件可以完美运行,我可以获取经久耐用的信息。问题出在这行代码上,这给了我错误:未定义oView。

oView.byId("txtLatitude").setText(position.coords.latitude);
  

未捕获的ReferenceError:未定义oView

在XML视图中,我设置了txtLatitude ID,因此XML视图没有问题。

这是控制器的代码:

 sap.ui.define([
    "sap/ui/core/mvc/Controller"
], function (Controller) {
    "use strict";

    return Controller.extend("GPS.GPS.controller.GPS", {
        oView: null,
        onInit: function() {
            var oView = this.getView();

        },

        getPosition: function() {
            navigator.geolocation.getCurrentPosition(this.onGeoSuccess, this.onGeoError, {
                enableHighAccuracy: true
            });
        },

        onGeoSuccess: function(position) {
            oView.byId("txtLatitude").setText(position.coords.latitude); <<--This line got error: undefined
        },


        onGeoError: function() {
            console.log('code: ' + error.code + '\n' + 'message: ' + error.message + '\n');
        },      
    });
});

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

问题出在onGeoSuccess内部,因为它是一个回调函数(这就是this.getView()不起作用的原因)。

一种解决方法是使用bind()

navigator.geolocation.getCurrentPosition(this.onGeoSuccess.bind(this), ...

然后您可以在this.getView()...内使用onGeoSuccess