在下面的代码中,我使用元素控制器模式来呈现产品集合。主视图模板正确渲染,我可以看到所有元素和div选择器“#cart-wrapper”。显然当主视图使用“addOne”调用嵌套视图时,它无法找到上面的选择器:
directory.CartView = Backbone.View.extend({
initialize: function(options) {
this.collection = directory.shellView.cartcollection;
},
render: function(){
this.$el.html(this.template());
this.addAll();
return this;
},
addAll: function() {
this.collection.each(this.addOne, this);
},
addOne: function(model) {
directory.cartItemView = new directory.CartItemView({model: model});
directory.cartItemView.render();
$("#cart-wrapper").append(directory.cartItemView.el);
}
});
NESTED VIEW
directory.CartItemView = Backbone.View.extend({
render: function(){
this.$el.html(this.template(this.model.toJSON()));
return this;
}
});
在addOne函数中$(“#cart-wrapper”)。length == 0。 我做了console.log(directory.cartItemView.el),下划线模板似乎没有在表格内呈现的所有模型。
主视图的调用方式如下:
directory.cartView = new directory.CartView();
directory.cartView.render();
$("#content").html(directory.cartView.el);
答案 0 :(得分:1)
这是因为您在将视图的根元素添加到页面之前调用了$("#cart-wrapper")
,这就是jQuery
正在寻找它的地方。要解决此问题,只需拨打this.$("#cart-wrapper")
即可。