我正在尝试在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');
},
});
});
如何解决这个问题?
答案 0 :(得分:0)
问题出在onGeoSuccess
内部,因为它是一个回调函数(这就是this.getView()
不起作用的原因)。
一种解决方法是使用bind():
navigator.geolocation.getCurrentPosition(this.onGeoSuccess.bind(this), ...
然后您可以在this.getView()...
内使用onGeoSuccess
。