Я думаю, что проблема с этим вокруг пункта:
this.around(function(callback) {
var context = this;
url = 'http://localhost:3000/api.json?school=' + localStorage.school
this.load(url)
.then(function(data) {
parsed = JSON.parse(data);
//if (parsed.meta != undefined) {
// alert(parsed.meta.message);
//}
context.products = parsed.products;
context.places = parsed.places;
context.school = parsed.school;
context.title = $('[data-role=header] h1');
})
.then(callback); // *** this won't get called if load() rejects promise
});
Как я понимаю, положение вокруг вызывается обратного вызова(), который будет продолжать загрузку маршрут, когда она вызывается.
Я думаю, что существует проблема с вашей цепочкой обещаний. Если load() возвращает отклоненное обещание (что, вероятно, делает, поскольку на вашем телефоне нет localhost: 3000), то ни одна из ваших функций then() не будет загружаться. Таким образом, callback() не вызывается, а приложение «останавливается». Я бы посоветовал (а) добавить туда некоторую обработку ошибок, чтобы вы могли видеть, что это происходит, и определенно (b) выполнить обратный вызов независимо от результата load(). Кроме того - JSON.parse (данные) выдаст ошибку, если данные не являются надлежащей строкой, кодированной JSON, - вы тоже хотите попробовать/поймать.
Я хотел бы попробовать это:
this.load(url)
.then(function(data) {
try {
parsed = JSON.parse(data);
} catch(e) {
console.log('error decoding json!: '+errorMsg);
}
//if (parsed.meta != undefined) {
// alert(parsed.meta.message);
//}
context.products = parsed.products;
context.places = parsed.places;
context.school = parsed.school;
context.title = $('[data-role=header] h1');
},function(errorMsg){
console.log('error loading json!: '+errorMsg);
})
.fin(callback); // *** fin() is meant to execute on both success and error, like a "finally".
Если ваша реализация обещания не поддерживает плавник(), посмотреть, что она зовет его эквивалент. Это, по существу, сокращение от: .then(callback).otherwise(callback)
Короткий длинный рассказ - вы хотите удостовериться, что обратный вызов, пройденный вокруг, будет выполнен независимо от того, что, или вы не будете продолжать загрузку маршрута, что является вашим неожиданным поведением быть.
Что касается того, что вы не можете видеть консоль, я не уверен, как выглядит ваша среда, но в прошлом у меня был успех с Eclipse и ADT - я прекрасно вижу журналы и ошибки консоли.
Не могли бы вы предоставить код, определяющий маршруты? – RoryKoehein
Я обновил свой ответ сущностью. –
Вы меняете URL-адрес с localhost на нужное имя хоста/ip перед загрузкой на свой телефон, верно? 'url = 'http: // localhost: 3000/api.json? school =' + localStorage.school' – RoryKoehein