【发布时间】:2016-04-12 11:22:36
【问题描述】:
这是我的 render() 函数:
initialize: function() {
this.selectDivView = new SelectView({
url: '/ir/secure/api/v40/myvariants/myVariantDBs',
method: 'POST',
template: myVariantDBFilterTemplate
});
},
render: function() {
this.$el.html(template()); //has div for "select drop down"
this.selectDivView.setElement(this.$(this._selectDivId)).render();
this.afterRender();
},
afterRender: function() {
this.$(this._selectEl).val();
//Expected to get some value but the select control is not yet rendered in dom
}
我尝试按照此链接中提到的方式进行操作 Backbone.js event after view.render() is finished 但无法访问 DOM 元素。
这是我的 Select 控件的把手模板 selectDiv.html
{{#each filters}}
<option value="{{id}}">{{name}}</option>
{{/each}}
我猜我在 afterRender() 中的时候 DOM 没有刷新。在这里可以做什么?
我的 SelectDivView 渲染函数
render: function(selectedValue) {
this.selectedValue = selectedValue;
$.ajax({
url: this.url,
method: this.method,
async: false, // THIS IS THE DECIDING PROPERTY.
success: function(data) {
that.filters = data;
that._doRender.call(that);
}
});
}
【问题讨论】:
-
也许你在
selectDivView的render方法中做一些异步操作......?除非我们看到代码,否则我们无法确定。请分享minimal reproducible example -
@t-j 非常感谢。您的陈述“也许您正在 selectDivView 的渲染方法中执行异步操作”给了我答案。
标签: jquery backbone.js render backbone-views backbone-events