Backbone支持嵌套视图和Chrome

时间:2013-08-14 18:19:14

标签: google-chrome backbone.js chromium

这是我第一次使用骨干支持来处理僵尸视图。 在介绍它之前,我没有遇到以下问题:

    this.$el.append(this.template());

    // this view fills up a select with options taken from a web services
    this.renderChildInto(new App.view.ResourcesView({name: "idActivityDesc", url: "/wfc-services/resources/activities"}), "#divIdActivityDesc");

    // population of the forms elements according to the loaded model
    this.populateSelectElements();
    this.populateTextElements();

    if(this.model.get('completed')) {
        this.$("#active").removeAttr("disabled");
    }

    this.delegateEvents(this.events);
    return this;

使用Firefox,一切正常。如果模型为空,则将使用默认元素设置select元素。在我的情况下, selectedIndex -1

在视图中进行调试一切似乎都很好。当通过方法renderChildInto将父视图发生时,我遇到了问题。 dom很好,但如果模型为空,则没有从populateSelectElements()派生的更改。如果它不是空的我没有问题,视图工作正常。

我真的很困惑,因为在return this;声明之前,即使在Chrome / Chromium中,我也会看到 selectedIndex -1 。但是在浏览器的最终渲染视图中,我看到选择 selectedIndex 0

在composite_view.js中,被叫代码是:

  renderChild: function(view) {
    view.render();
    this.children.push(view);
    view.parent = this;
  },

  renderChildInto: function(view, container) {
    this.renderChild(view);
    this.$(container).html(view.el);
  },

1 个答案:

答案 0 :(得分:0)

这是故事的结尾。

我从许多来源(包括stackoverflow)中发现,可以将selectedIndex用于-1。

我不是前端开发人员,我没有太多浏览器兼容性的经验,所以我找到了我需要的帮助,我的同事是这方面的专家,基本上建议我使用selectedIndex这种类型真是太奇怪了。

他建议我使用值为“ - ”的默认选项元素或符合域的任何内容来定义空元素。

像魅力一样工作,因为我们在设计中做得很好,我们只需将selectedIndex从-1更改为0。