Backbone-forms + Zepto无法呈现

时间:2012-09-02 15:14:21

标签: backbone.js zepto

我正在使用Phonegap + Zepto + Backbone为Blackberry OS5开发应用程序。为了做到这一点,我一直在使用Backbone-forms来处理submition但是由于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;
},

提前致谢!

1 个答案:

答案 0 :(得分:3)

Zepto,骨干和下划线没有正式支持BB5.0浏览器 - BB5.0的底层芒果不像BB6.0那样具有webkit。除此之外,我可以从我的经验中说,BB5.0中的javascript支持至少可以说不是很好。所以解决这个问题有点像在大海捞针。

可能的罪魁祸首是下划线,这是我看到你用于模板的东西。 Underscore似乎没有在BB5.0(任何循环或if语句)上处理任何类型逻辑的模板。因此,如果您想要在模板中执行比基本数据绑定更复杂的操作,则需要修改下划线或执行自己的模板解决方案。

不确定这是否是您想要的答案,但希望它有所帮助。 。

编辑:

重新提出下划线模板问题:BB OS5.0上的本机foreach实现似乎存在问题。如果可用的话,下划线会调用此原生foreach。在下划线中注释掉以下几行修复了我们在OS5.0中的集合渲染:

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

希望有所帮助。