0

Android OS 用の PhoneGap アプリケーションを開発しています。アプリケーションを可能な限り拡張できるように設計したいと考えています。そのため、すべてのモジュールを plgins として作成し、それらを 1 つのマップに保存してから、それらを 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' を呼び出せません...」

私は何を間違っていますか?誰か私がしなければならないことを教えてください。

ありがとう!!!

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 に答える