Javascript не выполняется с Cordova - PullRequest
0 голосов
/ 27 ноября 2018

Я не могу заставить js global правильно работать с cordova.Когда устройство готово, app получает событие, а затем создает объект Pool, который затем инициализируется и должен отображать предупреждение.Вот мой код:

index.js

var pool = null;

var app = {
    // Application Constructor
    initialize: function() {
        document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
    },

    // deviceready Event Handler
    //
    // Bind any cordova events here. Common events are:
    // 'pause', 'resume', etc.
    onDeviceReady: function() {
        this.receivedEvent('deviceready');
    },

    // Update DOM on a Received Event
    receivedEvent: function(id) {
        alert('Received Event: ' + id);
        pool = new Pool();
    }
};

app.initialize();

В приведенном выше примере я вижу предупреждение "Recieved event".

У меня естьPool объект в другом файле, который я включил в index.html, вот так:

<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<script type="text/javascript" src="js/pool.js"></script>

pool.js выглядит так:

var Pool = function() {
  var pool = {
      initialize: function() {

          ...

          alert("pool initialized");
      },


      ...


    };

    pool.initialize();
    return pool;
};

Почему доня вижу предупреждение после создания объекта Pool?

ОБНОВЛЕНИЕ

Мой код теперь выглядит так:

index.html

<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/pool.js"></script>
<script type="text/javascript" src="js/index.js"></script>

index.js

var pool = null;

var app = {
    // Application Constructor
    initialize: function() {
        document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
    },

    // deviceready Event Handler
    //
    // Bind any cordova events here. Common events are:
    // 'pause', 'resume', etc.
    onDeviceReady: function() {
        this.receivedEvent('deviceready');
    },

    // Update DOM on a Received Event
    receivedEvent: function(id) {
        console.log('Received Event: ' + id);
        pool = new Pool();
        console.log(pool.fake_data);
        pool.initialize();
    }
};

app.initialize();

pool.js

function Pool() {
        this.fake_data = [{item_name: "Hammer", pic: "", available: true}, {item_name: "Screwdriver", pic: "", available: true},
                                     {item_name: "Iron", pic: "", available: true}, {item_name: "Pot", pic: "", available: true},
                                     {item_name: "Stapler", pic: "", available: true}, {item_name: "Frying pan", pic: "", available: true},
                                     {item_name: "Sugar", pic: "", available: true}, {item_name: "Tape", pic: "", available: true}],

      this.initialize = function() {
          console.log("pool initialized");
      },

      ...

      }
    };
};

Я использую safari для отладки, и я ничего не получаю в консоли, даже сообщения console.log, которые должны появиться.Я изменил alerts на console.log и не вижу ни одного из сообщений в safari или Xcode, есть ли другой способ отладки?

Вывод консоли Xcode:

2018-11-26 20:47:55.423048-0500 Pool[569:76165] Apache Cordova native platform version 4.5.5 is starting.
2018-11-26 20:47:55.423628-0500 Pool[569:76165] Multi-tasking -> Device: YES, App: YES
2018-11-26 20:47:55.443524-0500 Pool[569:76165] Using UIWebView
2018-11-26 20:47:55.445229-0500 Pool[569:76165] [CDVTimer][console] 0.065923ms
2018-11-26 20:47:55.445345-0500 Pool[569:76165] [CDVTimer][handleopenurl] 0.064969ms
2018-11-26 20:47:55.446376-0500 Pool[569:76165] [CDVTimer][intentandnavigationfilter] 0.987053ms
2018-11-26 20:47:55.446456-0500 Pool[569:76165] [CDVTimer][gesturehandler] 0.047088ms
2018-11-26 20:47:55.463569-0500 Pool[569:76165] [CDVTimer][localstorage] 17.084002ms
2018-11-26 20:47:55.463611-0500 Pool[569:76165] [CDVTimer][TotalPluginStartup] 18.489003ms
2018-11-26 20:47:55.707543-0500 Pool[569:76165] Resetting plugins due to page load.
2018-11-26 20:47:55.849767-0500 Pool[569:76165] Finished load of: file:///var/containers/Bundle/Application/6D499572-52BB-418B-8324-CEE8FD13911C/Pool.app/www/index.html

1 Ответ

0 голосов
/ 27 ноября 2018

Вызванные ошибками кода JavaScript, просто пришлось их исправить (я использовал https://jshint.com/, чтобы помочь разобраться быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...