这是我第一次使用骨干支持来处理僵尸视图。 在介绍它之前,我没有遇到以下问题:
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);
},
答案 0 :(得分:0)
这是故事的结尾。
我从许多来源(包括stackoverflow)中发现,可以将selectedIndex用于-1。
我不是前端开发人员,我没有太多浏览器兼容性的经验,所以我找到了我需要的帮助,我的同事是这方面的专家,基本上建议我使用selectedIndex这种类型真是太奇怪了。
他建议我使用值为“ - ”的默认选项元素或符合域的任何内容来定义空元素。
像魅力一样工作,因为我们在设计中做得很好,我们只需将selectedIndex从-1更改为0。