Я не могу заставить 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