1

Backbone、jQueryMobile、Phonegapを使用してモバイルアプリケーションを開発しています。このアプリはAndroid、iOS、BB> = 6でうまく機能しますが、BB5では予想どおり数え切れないほどの問題が発生しています。

現在、バックボーン自体に問題があります。私はそれをデバッグしていますが、問題はルート定義にあるようです。アプリケーションは、それに関連する何かが原因で開始時にクラッシュします(まだ調査中ですが、BB5のデバッグは苦痛です...)。

また、BB5はBackboneがナビゲーションを行うために依存しているハッシュリスニングではうまく機能しないことを読んだので、誰かがOS5でバックボーンアプリを作成できたのか、それとも単に不可能なのか疑問に思います。

4

2 に答える 2

2

誰かが同じ問題に直面した場合に備えて、この質問を更新しています。

短編小説:OS5でBackboneを実行することはできません。バックボーンにデバッグしたところ、正規表現を使用したいくつかの命令がクラッシュを引き起こしていました。これらが将来修正されたとしても、jsのサポートは単に十分ではないと判断し、最終的にOS5バージョンを破棄しました。

于 2012-04-25T08:42:55.180 に答える
0

ほとんどの場合、それはおそらく価値がありませんが、これは実行可能です。

かなりの作業を経て、なんとかアプリを実行できました。JavaScriptのサポートはOS 5.0ではあまり良くなく、bfcapellの回答で示唆されているようにデバッグは非常に遅いです。

バックボーンを機能させるには、hashchangeイベントを使用してURLの変更を処理するコードをコメントアウトする必要があります(これは、ルーターが使用されていることを前提としています)。THereは、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固有の問題を見つけると思われます)。

于 2012-09-06T12:49:22.653 に答える