1

Я разрабатываю мобильное приложение с использованием Backbone, jQueryMobile и Phonegap. Приложение отлично работает на Android, iOS и BB> = 6, но на BB5, как и ожидалось, возникают бесчисленные проблемы.Магистраль на BlackBerry OS5 - возможно ли это?

У меня теперь проблемы с самой базой. Я отлаживаю его и, похоже, проблема заключается в определении маршрутов. Приложение врезается во время запуска из-за чего-то связанного с ним (все еще исследуется, но отладка является болезненной для BB5 ...).

Кроме того, я прочитал, что BB5 не будет хорошо играть с прослушиванием хэшей, на который ссылается Backbone, чтобы сделать навигацию, поэтому мне интересно, смог ли кто-нибудь создать базовое приложение на OS5 или просто не было возможное?

ответ

2

Я обновляю этот вопрос только в случае, если кто сталкивается с таким же вопросом:

Краткая история: это невозможно запустить Backbone на OS5. Я отлаживался в основу, и некоторые инструкции с регулярными выражениями вызывали крах. Даже если они будут исправлены в будущем, мы определили, что поддержка js просто недостаточно хороша и, наконец, отбросила версию OS5.

0

Возможно, это не стоит в большинстве случаев, но это выполнимо.

Мне удалось получить приложение, работающее после довольно много работы - поддержка javascript на самом деле невелика в ОС 5.0, и отладка очень медленная, как было предложено в ответе bfcapell.

Чтобы получить основу для работы, вам необходимо прокомментировать код, который использует событие hashchange для обработки изменений URL (это предполагает, что используется маршрутизатор). Это резерв в магистрали, который использует setinterval для опроса изменений.

// Depending on whether we're using pushState or hashes, and whether 
// 'onhashchange' is supported, determine how we check the URL state. 
/*if (this._hasPushState) 
{ 
    alert('pushstate'); 
    $(window).bind('popstate', this.checkUrl); 
} else if (this._wantsHashChange && ('onhashchange' in window) && !oldIE) 
{ 
    alert('hashchange'); 
    $(window).bind('hashchange', this.checkUrl); 
} else if (this._wantsHashChange) 
{*/ 
    this._checkUrlInterval = setInterval(this.checkUrl, this.interval); 
//} 

Метод foreach в нижнем подчеркивании также необходимо изменить, чтобы не использовать собственный метод foreach. Это необходимо для правильной визуализации коллекций.

var each = _.each = _.forEach = function (obj, iterator, context) 
{ 
    if (obj == null) return; 

    /*if (nativeForEach && obj.forEach === nativeForEach) 
    { 
     obj.forEach(iterator, context); 
    } 
    else*/ 
    if (obj.length === +obj.length) 

Вышесказанное должно быть, по крайней мере, главным образом работающим. (Я говорю в основном, потому что у меня есть полностью работающее приложение, но я подозреваю, что вовремя обнаружу еще несколько проблем с OS5).

Смежные вопросы