Магистраль на BlackBerry OS5 - возможно ли это? - PullRequest
1 голос
/ 14 февраля 2012

Я разрабатываю мобильное приложение, используя Backbone, jQueryMobile и Phonegap.Приложение отлично работает на Android, iOS и BB> = 6, но на BB5, как и ожидалось, возникает множество проблем.

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

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

Ответы [ 2 ]

2 голосов
/ 25 апреля 2012

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

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

0 голосов
/ 06 сентября 2012

Это, вероятно, не стоит в большинстве случаев, но это выполнимо.

Мне удалось запустить приложение после довольно продолжительной работы - поддержка javascript на OS 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).

...