0

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

    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()if 模型为空的情况下派生的更改。如果它不是空的,我没有问题,并且视图工作正常。

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

在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);
  },
4

1 回答 1

0

这是这个故事的结尾。

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

我不是前端开发人员,我在浏览器兼容性方面没有太多经验,所以我从我的一位专家那里找到了我需要的帮助,并且基本上建议我这种 selectedIndex 的用法真的很奇怪.

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

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

于 2013-08-26T16:02:46.420 回答