Javascript Can';t在特定分割后插入内容。Backbone.js
以下是我得到的: ProductListView.jsJavascript Can';t在特定分割后插入内容。Backbone.js,javascript,jquery,dom,backbone.js,Javascript,Jquery,Dom,Backbone.js,以下是我得到的: ProductListView.js define(['jquery', 'underscore', 'backbone', 'views/ProductView', 'views/PaginatorView'], function($, _, Backbone, ProductView, PaginatorView) { var ProductListView = Backbone.View.extend({ className: 'productsL
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;
});
虽然可以将PaginatorView
附加到(ProductListView
)视图中,但似乎不可能在其外部插入内容
您遇到过类似的情况吗?
this.
将失败,因为调用render()
时,this.
尚未插入DOM(它只是一个悬空的div)
主干鼓励您在插入视图之前等待视图的HTML内容准备就绪。这样,浏览器只需重新绘制一次窗口,性能会更好
根据经验,您应该只在主干视图中操作驻留在
this.$el
中的内容。如果视图元素尚未添加到DOM(“断开”),调用它将不会更改元素或DOM。但是,它确实返回了一个包含两个元素的集合,您可以将其分配给this.$el
,以便稍后追加它们。但我很确定这不是一个好的做法,因为a只纠缠在一个元素上。好的,我会尝试将它移动到路由器上!我怀疑这是从DOM中分离出来的。谢谢这可能会导致一些问题,因为el
和$el
不再匹配,而且setElement
也需要一件事。最后,您将使委托绑定到不完全是$el
的对象。可能有用,但它闻起来很难闻,可以在你最意想不到的时候以新的有趣的方式出现。是的,这就是为什么我说“糟糕的练习”。以有趣的方式突破:-)
this.$el.after(new PaginatorView({ model: this.model, page: this.options.page }).render().el);