我正在为Android操作系统开发PhoneGap应用程序。我希望我的应用程序尽可能扩展。因此,我将所有模块都写为plgins,将它们保存在一个地图中,然后我想在我的HTML页面中使用它们。我在MyJS.js文件中写了这段代码:
var map = {};
// Allow jQuery to cash the cordova.js
$.ajaxSetup({ cache: true});
$.getScript("cordova-2.6.0.js",function(){
var AccelerometerSensor = {
accelJSONObj:cordova.require("cordova/plugin/Acceleration"),
accelPGAPSens:cordova.require("cordova/plugin/accelerometer"),
color:'#FF8C00',
sensorID:'Accelerometer',
// Flag indicates whether this sensor type is supported by the device or not.
availability:null,
isAvailable:function() {
accelPGAPSens.getCurrentAcceleration(
function(x){availability = true;},
function(){availability = false;});
},
}
})
.done(function(script, textStatus) {
map["Accelerometer"] = this.AccelerometerSensor;
alert('done');
})
.fail(function(jqxhr, settings, exception) {
alert('fail');
});
现在我想调用isAvailable函数,所以我写了这段代码:
map["Accelerometer"].isAvailable()
但我得到了一个TypeError:
“无法调用方法'isAvalable'的未定义...”
我做错了什么?谁能告诉我我要做什么?
感谢!!!
答案 0 :(得分:2)
您正在使用: -
map["Accelerometer"] = this.AccelerometerSensor;
但完成的“这个”是不同的背景,即全球。
var map = {}, AccelerometerSensor;
// Allow jQuery to cash the cordova.js
$.ajaxSetup({ cache: true});
$.getScript("cordova-2.6.0.js",function(){
AccelerometerSensor = {
accelJSONObj:cordova.require("cordova/plugin/Acceleration"),
accelPGAPSens:cordova.require("cordova/plugin/accelerometer"),
color:'#FF8C00',
sensorID:'Accelerometer',
// Flag indicates whether this sensor type is supported by the device or not.
availability:null,
isAvailable:function() {
accelPGAPSens.getCurrentAcceleration(
function(x){availability = true;},
function(){availability = false;});
},
}
})
.done(function(script, textStatus) {
map["Accelerometer"] = AccelerometerSensor;
alert('done');
})
.fail(function(jqxhr, settings, exception) {
alert('fail');