0

我正在为 Android 操作系统开发一个 PhoneGap 应用程序。我希望我的应用程序设计得尽可能可扩展。因此,我将所有模块都编写为 plgin,将它们保存在一张地图中,然后我想在我的 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()

但我得到了一个类型错误:

“无法调用未定义的方法‘isAvalable’……”

我究竟做错了什么?谁能告诉我我必须做什么?

谢谢!!!

4

1 回答 1

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');
于 2013-06-06T11:08:24.633 回答