0

Phonegap + Zepto + Backbone を使用して、Blackberry OS5 用のアプリを開発しています。そのためにBackbone-formsを使ってサブミット処理を行っていたのですが、OS5ではjQueryのバージョンが1.4.4以上で問題が発生したため、Zeptoに移行したのですが、BackboneFormsのrenderメソッドが動かなくなってしまいました。それ?

これが壊れているセクションです。完全なコードについては、https : //github.com/powmedia/backbone-forms を確認してください。

render: function() {
  var self = this,
      options = this.options,
      template = Form.templates[options.template];

  //Create el from template - HERE IT BREAKS
  var $form = $(template({
    fieldsets: '<b class="bbf-tmp"></b>'
  }));

  //Render fieldsets
  var $fieldsetContainer = $('.bbf-tmp', $form);

  _.each(options.fieldsets, function(fieldset) {
    $fieldsetContainer.append(self.renderFieldset(fieldset));
  });

  $fieldsetContainer.children().unwrap();

  //Set the template contents as the main element; removes the wrapper element
  this.setElement($form);

  if (this.hasFocus) this.trigger('blur', this);

  return this;
},

前もって感謝します!

4

1 に答える 1

3

Zepto、backbone、および underscore は BB5.0 ブラウザーを公式にサポートしていません。これに加えて、私の経験から言うと、BB5.0 での JavaScript サポートは控えめに言っても素晴らしいものではありません。したがって、これを解決することは、干し草の山から針を見つけるようなものです。

可能性のある原因はアンダースコアです。これは、テンプレートに使用しているものです。アンダースコアは、BB5.0 で何らかの種類のロジック (ループまたは if ステートメント) を含むテンプレートを処理していないようです。したがって、テンプレートで基本的なデータ バインディングよりも複雑なことをしたい場合は、アンダースコアを変更するか、独自のテンプレート ソリューションを実行する必要があります。

これがあなたが望んでいた種類の答えかどうかはわかりませんが、役に立てば幸いです。. .

編集:

アンダースコア テンプレートの問題について: BB OS5.0 のネイティブ foreach 実装に問題があるようです。Underscore は、利用可能な場合、このネイティブ foreach を呼び出します。アンダースコアで次の行をコメントアウトすると、OS5.0 でのコレクションのレンダリングが修正されました。

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

それが役立つことを願っています。

于 2012-09-05T13:49:42.837 に答える