这是我第一次使用骨干支持来处理僵尸视图。在介绍之前,我没有遇到以下问题:
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 的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);
},