以下是我所得到的:
ProductListView.js
define(['jquery', 'underscore', 'backbone', 'views/ProductView', 'views/PaginatorView'], function($, _, Backbone, ProductView, PaginatorView) {
var ProductListView = Backbone.View.extend({
className: 'productsList',
initialize: function() {
this.render();
},
render: function() {
// some initialization
// that's for zurb grid
this.$el.addClass('twelve columns');
for(var i = startPos; i < endPos; i++) {
this.$el.append(new ProductView({ model: products[i] }).render().el);
}
this.$el.append(new PaginatorView({ model: this.model, page: this.options.page }).render().el);
// this.$el.after(new PaginatorView({ model: this.model, page: this.options.page }).render().el);
return this;
}
});
return ProductListView;
});
似乎我无法在this.$el
之后插入内容。这条线
this.$el.after(new PaginatorView({ model: this.model, page: this.options.page }).render().el);
虽然可以将PaginatorView
附加到(ProductListView
)视图中,但似乎无法在其外部插入内容。
你遇到过类似的事吗?
答案 0 :(得分:1)
this.$el.after
会失败,因为调用render()
时,this.$el
尚未插入DOM(它只是一个悬空的div)。
Backbone鼓励您在插入之前等待视图的HTML内容准备就绪。这样,浏览器只重绘一次窗口,性能更好。
根据经验,您应该仅在Backbone视图中操作位于this.$el
内的内容。
答案 1 :(得分:0)